做量化操作的時候經常需要使用到matlab編寫策略或者計算多因子,for迴圈非常慢,自己找了一些matlab中for迴圈的優化方法,for的部分每處理乙個大矩陣都要花費大量的時間,這是不可避免需要遇到的問題~。
方法1:迴圈多不要緊,要緊的是迴圈巢狀得太多,要解決這個問題,需要從根本上找原因,用更好的資料結構和演算法,從根源上減少對於迴圈的需求
方法2:將迴圈次數多的放在裡面,迴圈次數少的放在外面做大迴圈
方法3:for迴圈中少用if——else if判斷,用switch——case,效率更高
方法4:多執行緒併發替代單迴圈麼,盡可能利用cpu,比如用並行的parfor
1優化:for(int i = 0; i < 100; ++i)
2
1減少迴圈次數,而且還能意外增加指令級的並行運算機率,其次,用多執行緒,最簡單的就是openmp。要是對資料的處理,就用sse指令什麼的。for(int i = 0; i < 25; i += 4
) 2
這樣下來。整個程式不不止快那麼一點點
方法5:結合具體的迴圈,利用時間和空間的相互轉換,也就是用空間換時間
方法6:vectorization(向量化)處理後,例如通過對for迴圈的向量化,效率也有很大提高。
向量化實際上就是矩陣化,利用點運算代替for迴圈,利用matlab軟體強大的矩陣運算能力優化程式
1 sum1=0;2向量化之後for i=1:100
3for j=1:100
4for k=1:100
5 d=i.^2+j.^2+k.^2
;6 sum1=sum1+d;
7end
8end
9 end
1 i=1:100;j=1:100;k=1:100方法7:最基本的方面,別在視窗中顯示矩陣,每條語句的結尾加分號;2 sum1=sum(i.^2+j.^2+k.^2);
方法8:找一台效能好的電腦,用伺服器跑那就更好了!
ps:下面是乙個測試,來區分優化前和優化後的時間效率問題,讀取mxm的矩陣。利用上述所提到的優化方式進行優化(具體怎麼優化,還是根據實際情況進行優化,這裡不做說明),如圖所示:
你知道js當中for迴圈當中的bug嗎,如何解決它
本來以為for迴圈可以很好的解決一切問題,直到今天遇到了這段 重新整理了我對for迴圈的認識,話不多說,直接上 var arr for var i 0 i 10 i arr 3 大家看上面這段 我先宣告了乙個空陣列,然後把它放在迴圈裡面,迴圈新增函式作為arr陣列的資料,第一印象看到的時候,肯定不少...
Matlab之for迴圈語句
for迴圈允許一組命令以固定的和預定的次數重複。for迴圈的一般形式是 for 變數 矩陣 表示式 end在for和end語句之間的表示式按陣列中的每一列執行一次。在每一次迭代中,x被指定為陣列的下一列,即在第n次迴圈中,x array n n 0 1 10 y n for i 1 11 y i s...
Matlab的迴圈語法
1 用迴圈方式實現從1到999的累加 2 1 for迴圈方式實現 初始化sum的值為0 sum 0 從1開始遍歷到999 for i 1 999 對遍歷的每乙個元素進行累加 sum sum i end 在控制台顯示結果 2 while迴圈實現 初始化sum1的值為0 sum1 0 初始化開始遍歷的值...