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

看板MATLAB作者 (ㄍㄠˊ)時間15年前 (2009/01/10 12:46), 編輯推噓4(405)
留言9則, 3人參與, 最新討論串3/7 (看更多)
※ 引述《e0101010 (我...)》之銘言: : ※ 引述《ericabab (ㄍㄠˊ)》之銘言: : : 今天跑程式發現一個搞不懂的問題 : : 以下兩種情況 : : (1) : : for i=1:1000 : : ; : : end : : (2) : : k=1:1000; %這行並沒有算在時間裡 : : for i=k : : ; : : end : : 這兩種情況的for loop,(2)的速度會慢上好幾十倍 : : 想不通為什麼,我會覺得完全是一樣的事情@@ : : 謝謝 : 根據測試 : =============================================================== : (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.113.199.233

01/10 14:07, , 1F
改用c (誤)
01/10 14:07, 1F

01/10 14:15, , 2F
我沒辦法用c,因為實際情況k是求出來的不規則的一串數@@
01/10 14:15, 2F

01/10 14:35, , 3F
那你就應該用while寫 而不是for
01/10 14:35, 3F

01/10 15:25, , 4F
我的k是求出來的,ex: k=[2 4 15 133 665 ...]
01/10 15:25, 4F

01/10 15:25, , 5F
然後我需要每個k,所以應該是用for沒錯吧?
01/10 15:25, 5F

01/10 15:25, , 6F
只是不知道為什麼整個程式都時間都花在 "for" 這行上面
01/10 15:25, 6F

01/10 16:25, , 7F
你的k有多大
01/10 16:25, 7F

01/10 16:30, , 8F
1萬多筆
01/10 16:30, 8F

01/11 02:18, , 9F
你怎麼知道改用其他寫法可以省多少時間?
01/11 02:18, 9F
文章代碼(AID): #19Q2WcDd (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #19Q2WcDd (MATLAB)