Re: [問題] for的速度問題已回收

看板MATLAB作者 (朱子)時間17年前 (2009/01/11 10:42), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串4/7 (看更多)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% r=0; k1=1000000; tic for i=1:k1 r=r+i^2; end toc s=0; k2=1:1000000; tic for i=k2 s=s+i^2; end toc t=0; k3=1:1000000; tic for i=1:1000000 t=t+k3(i)^2; end toc %%%%%%%%%%%%%%%%%%%%%%%%%%%% Elapsed time is 0.016000 seconds. Elapsed time is 2.875000 seconds. Elapsed time is 0.016000 seconds. 改成第三種寫法也許會快一點 ※ 引述《ericabab (ㄍㄠˊ)》之銘言: : ※ 引述《e0101010 (我...)》之銘言: : : 根據測試 : : =============================================================== : : (B) : : 如果是寫 : : tic : : for i=1:1000 : : ; : : end : : toc : : k=1:1000; : : tic : : for i=k : : ; : : end : : toc : : Elapsed time is 0.000006 seconds. : : Elapsed time is 0.000244 seconds. : : 可能要考慮的是 是不是k在外面要多去執行判斷k的問題 : : =================================================================== : 你好,我的問題應該不只是因為k在外面要判斷的問題 : 如下code : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : k1=1000; : tic : for i=1:k1 : ; : end : toc : k2=1:1000; : tic : for i=k2 : ; : end : toc : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% : Elapsed time is 0.000006 seconds. : Elapsed time is 0.000185 seconds. : 同樣兩個情況都有給k進去,但速度硬是差了30倍左右 : 因為我的程式的需求,其實我的k是一串不規則的數 : 所以只能用第二種方法。 : 而因為我要跑的迴圈很多,加上迴圈裡的指令時間不長 : 所以導致速度真的會慢幾十倍...因此想知道關鍵在哪 : 才能研究有沒有辦法改善 : 謝謝你~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.158

01/11 11:36, , 1F
這個syntax sugar還真是讓人難以下嚥啊
01/11 11:36, 1F

01/11 11:36, , 2F
不過也只有慢兩三秒嘛....(誤)
01/11 11:36, 2F

01/11 13:44, , 3F
這個有用,謝謝!
01/11 13:44, 3F
文章代碼(AID): #19QLnzN5 (MATLAB)
文章代碼(AID): #19QLnzN5 (MATLAB)