質問: ループ処理における,1ループごとの計算時間について forループを用いた計算に置ける計算時間について,たとえばループ回数を倍にした時,計算時間も2倍になると考えたのですが,計算時間は2倍以下になりました. 1ループごとの計算時間を見ると,多少のばらつきはありますが,ループの後半に行くほど計算時間が短くなっていました. 計算内容は明らかには出来ませんが,ループ回数に依存し,計算時間が短くなるような因子はありません. matlabでのforループでは裏で計算時間が短くなるような処理がなされているのでしょうか? また,内部でどのような計算がなされているか確認するする術はありますでしょうか?
回答: 興味深い現象です。 試しに簡単な計算で確かめてみましたが、特にループ回数と計算時間に相関は見られませんでした。 当時に動かしている他のアプリなどの影響が大きい気がします。 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) コンパイルが使用されていますが、その内部でどのように処理されているかを知ることはできません。 https://jp.mathworks.com/products/matlab/matlab-execution-engine.html