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

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

回答(1 个)

michio
michio 2020-7-30
興味深い現象です。
試しに簡単な計算で確かめてみましたが、特にループ回数と計算時間に相関は見られませんでした。
当時に動かしている他のアプリなどの影響が大きい気がします。
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 个评论
yuuki harada
yuuki harada 2020-7-30
ご回答ありがとうございます。
わたしの環境では,簡単な計算(逆行列を求め,その値を返す)でも同様の減少が見られたため,michio様の環境でそのような結果が得られなかったということは,MATLAB以外の要因があるかもしれませんね……
もう少し調査してみたいと思います.ありがとうございました.
michio
michio 2020-7-30
コメントありがとうございます。
もし再現性があれば開発チームにも確認することもできますので、何かありましたらご連絡ください。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 環境と設定 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!