MATLAB Answers

ループ処理における,​1ループごとの計算時​間について

3 views (last 30 days)
yuuki harada
yuuki harada on 30 Jul 2020
Commented: michio on 30 Jul 2020
forループを用いた計算に置ける計算時間について,たとえばループ回数を倍にした時,計算時間も2倍になると考えたのですが,計算時間は2倍以下になりました.
1ループごとの計算時間を見ると,多少のばらつきはありますが,ループの後半に行くほど計算時間が短くなっていました.
計算内容は明らかには出来ませんが,ループ回数に依存し,計算時間が短くなるような因子はありません.
MATLABでのforループでは裏で計算時間が短くなるような処理がなされているのでしょうか?
また,内部でどのような計算がなされているか確認するする術はありますでしょうか?

  0 Comments

Sign in to comment.

Answers (1)

michio
michio on 30 Jul 2020
興味深い現象です。
試しに簡単な計算で確かめてみましたが、特にループ回数と計算時間に相関は見られませんでした。
当時に動かしている他のアプリなどの影響が大きい気がします。
N = 10000;
t = zeros(N,1);
sumsin = zeros(N,1);
x = linspace(0,2*pi,1000);
for ii=1:N
tic
sumsin(ii) = sum(sin(ii*x));
t(ii) = toc;
end
plot(log10(t))
MATLAB コード実行時に Just-in-Time (JIT) コンパイルが使用されていますが、その内部でどのように処理されているかを知ることはできません。

  2 Comments

yuuki harada
yuuki harada on 30 Jul 2020
ご回答ありがとうございます。
わたしの環境では,簡単な計算(逆行列を求め,その値を返す)でも同様の減少が見られたため,michio様の環境でそのような結果が得られなかったということは,MATLAB以外の要因があるかもしれませんね……
もう少し調査してみたいと思います.ありがとうございました.
michio
michio on 30 Jul 2020
コメントありがとうございます。
もし再現性があれば開発チームにも確認することもできますので、何かありましたらご連絡ください。

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!