Re: [問題] 如何改善速度已回收

看板MATLAB作者 (獅仔)時間16年前 (2008/09/10 11:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《owamisa (有沒有陽明新生呀)》之銘言: : function output=pifun01(n) : for i=1:n : output(i)=(1/(2*i-1))*(-1)^(i+1); ^ output : output=sum(output); ^^^^^^^^^^^^^^^^^^ output : end : a=4*output : 個人覺得應該是次方會影響速度吧 ^^^^^^^^^^^^^^ 主要影響速度的關鍵應該是 output 的長度是個不定值 output 的長度隨著 n 一直變化 cpu 一直疲於分配新的記憶體空間給 output 我在你的程式前後加了 output 藉以觀察 output 變數的長度變化 (n 用 3 ~ 5 之間即可) 用 pifun01(5) 下去跑一下 就容易明白了 我猜那個範例的精神主要是要講這個才對 附上我修改的程式碼 邏輯上和 monkeykkman 一樣 但我保留了呼叫函數的部分 --------------------------------------- function output=pifun02(n) output = zeros(2,1) ; tic for i=1:n output(1) = (1/(2*i-1))*(-1)^(i+1) ; output(2) = sum(output) ; % 呼叫函數多少還是會損失一些時間,但總有會需 ^^^^^^^^^^^ % 要呼叫的時侯 end toc a = 4 * output --------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.215.149 ※ 編輯: yule66 來自: 140.116.215.149 (09/10 11:24)
文章代碼(AID): #18nppRpv (MATLAB)
文章代碼(AID): #18nppRpv (MATLAB)