些細なループがどれほど高速になるかを分析しているときに、この奇妙な現象に遭遇しました。
変数に対して何もしないのは、変数に対して何かを行うよりもはるかに遅くなります。
もちろん、何もしないコードを書きたいという衝動を感じることはあまりないので、これは本当の問題ではありませんが、これは私を驚かせました。
これが私が見つけたものです:
tic,for t= 1:1e6, x=x; end,toc %This runs very fast, about 0.07 sec
y=x; tic,for t= 1:1e6, y=x; end,toc %This runs fast, about 0.11 sec
tic,for t= 1:1e6, x; end,toc %This takes over half a second?!
ループが最適化されないようにループに簡単な計算を追加しようとしましたが、結果は変わりませんでした。
要約すると、私の質問は次のとおりです。
何が起こっているのか、心配する必要はありますか?