Maximizing Performace of Matlab Code
在七月份的MathWorks News&Notes上看到一則關於運用Matlab記憶體結構來最佳化程式碼執行速度的文章,相當有用,本想早點寫出來,但一直拖到現在收拾辦公室時才把它挖出來。
簡單地說,要讓Matlab程式執行快速,程式碼必須:
1. 預先宣告變數大小
2. 以colume方式存取矩陣
3. 避免不必要的變數
關於第一點,就是在使用一個矩陣之前先用zeros這個函數宣告大小,這可以避免程式在執行時邊做運算邊配置記憶體空間而拖慢運算速度。以該文章圖一的簡單迴圈運算為例,運算速度可以提高將近600倍。
關於第二點,因為Matlab的矩陣在記憶體裡面是以colume而非row來排列的,所以執行迴圈時最內層迴圈沿著colume方向執行,可存取連續記憶體位址,而讓系統cache運用最佳化。
關於第三點,就是用越少變數越好,可避免邊執行邊宣告或複製記憶體空間。例如:可以用x=x*2就不要用y=x*2。
原文:Maximizing Code Performance by Optimizing Memory Access
No comments:
Post a Comment