2011-12-13 72 views
1

我必須在matlab中做一些計算。它已經在一個m文件中實現,但由於有很多循環,所以運行速度很慢。這個想法是編譯本地代碼並在matlab中使用這些代碼。是matlab mex函數還是共享對象/ DLL更快?

現在我有兩種可能性:

  • 寫共享對象(的.so OD .dll文件),其是負載到MATLAB動態
  • 寫C(++) - MEX函數

在第一種情況下,matlab執行到本地數據類型等的接口,在後一種情況下,我必須自己做。現在的問題是:什麼更快/更好?我可以同時做這兩件事,但我想盡可能地獲得更快的速度。

感謝

+0

除非你在外部代碼中只做了一個微不足道的計算,否則應該沒有性能差異。使用哪個更適合手頭的任務。 –

回答

2

我會認爲有通常是在加載時間和函數調用的開銷小的改進使用MEX文件時,但如果來電的號碼是相對於被執行的計算低,整體表現差異可能並不大。

但是,使用MEX文件很可能會導致更透明,更易讀和更易維護的代碼,因爲該函數看起來就像是本地MATLAB命令。我認爲,除非性能是最重要的要求,否則這一考慮至少與速度同等重要。