在分析一个普通循环的速度有多快的过程中,我遇到了这个奇怪的现象。
对变量不做任何事情比对它做一些事情要慢得多。
当然,这不是一个真正的问题,因为您不会经常感到编写什么都不做的代码的冲动,但这让我感到惊讶,所以我想知道是否有人了解正在发生的事情以及这在实际情况下是否会成为问题。
这是我发现的:
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?!
我尝试在循环中添加一个简单的计算,以确保不会优化循环,但这并没有改变结果。
总而言之,我的问题是:
发生了什么事,我应该担心吗?