Re: [問題] 如何改善速度已回收
※ 引述《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)
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章