什麼情況下使用 C 更快,什麼情況下使用 Matlab 更快?

時間 2021-06-04 12:00:03

1樓:

MATLAB 內建的數值計算函式大部分都支援多執行緒,如果你的任務是高密集的浮點計算,且能用 MATLAB 的內建函式流暢處理的話,這個時候寫的夠好的 MATLAB 程式工作起來就像乙個優化程度比較高的多執行緒 C 或 Fotran 程式,想在同一臺機器上用單執行緒的 C 程式更快基本不可能

MATLAB 比 C 慢很多的情況一般是有大量邏輯判斷,文字處理或整數運算等非浮點計算密集型程式,或者是需要一些 MATLAB 沒有內建的資料結構的情況

歸結起來大概就是:不能用其內建函式或資料結構很好處理的情況 MATLAB 的效能劣勢比較明顯,反之,並沒有很大劣勢,反而很多時候你需要花很大力氣才能寫出接近 MATLAB 效能的 C 程式。

2樓:

跨語言的比較是很困難的。

兩個版本的實現不見得完全一樣。Matlab要達到效能最優,就要注意向量化操作。C版本可能由編譯器實現了向量化。

1. 不同平台下,Matlab的優化和C編譯器的優化效果不同。這個太複雜了,等高手來展開。

2. 我的經驗,如果演算法是高計算量,低邏輯判斷的,那麼Matlab會更好些。尤其是涉及到level-3的BLAS運算,Matlab在底層是呼叫精心優化過的C庫的。

這時候,其實不是Matlab和C比較,而是專家優化過的C和隨便實現的C在比較。但是如果演算法涉及到大量的判斷、分支和函式呼叫,還是用C實現吧,一般編譯器都可以優化到很好了。

什麼情況下用England,什麼情況下用Britain?兩者有什麼區別?

Yupeng 同級別比較 UK等同於中國 Britain相當於中國大陸 England相當於東部沿海地區。所以,你在蘇格蘭跟蘇格蘭人說,我超級喜歡England,相當於你在四川跟四川人說,我超級喜歡你們火鍋裡的涮羊肉蘸麻醬。 郭力特 常識問題,給 瘦嘟嘟兒and胖墩墩兒 和 懶癌研究中心 的答案挑個...

什麼情況下使用異常處理?

epcastle 使用異常,只是為了表達乙個使用場景裡,這樣做是有錯的,我要警告你,禁止你。比如,中國象棋裡,未過河的兵左右後退走,錯,拋異常。所以乙個場景裡使用一兩個異常就好,可以定義規則異常,出錯了,在異常訊息寫對應的話,比如,你使用的物件兵,不能這麼這麼走。關鍵字 場景錯誤 何曉陽 這個從程式...

typescript在什麼情況下適合使用函式過載,什麼時候使用泛型呢?

函式簽名的變形和引數個數有關的話,你可能就需要用到函式過載來過載函式簽名了。泛型本身和函式過載無關,只是一種抽象型別的方式。另外就是 ts 的過載和其他靜態語言的過載是兩碼事,它是 ts 用來推斷函式簽名的一種方式,所以可以和泛型一起配合使用,如果你用過 rxjs,會發現有很多這種型別宣告。不要寫過...