我有一个非常简单的情况,其中matlab执行时间根据我运行代码的方式而有所不同:
tic
pause(1)
toc
如果我在脚本上按 Ctrl + Enter ,我会得到类似的内容:
Elapsed time is 1.000241 seconds.
如果我选择代码并按 F9 ,我会得到类似的内容:
Elapsed time is 1.025203 seconds
我注意到25ms的时差是可重复的。
答案 0 :(得分:3)
如果您在Matlab“命令窗口”中复制并覆盖您的代码,那么您将代码作为m文件进行比较时会发现很大的不同。
在我的电脑上(Intel i7,16GB RAM),我的结果是+/- 5ms。
Elapsed time is 1.002843 seconds.
Elapsed time is 1.008236 seconds.
Elapsed time is 1.003001 seconds.
但是当我在m文件中运行代码时,我得到了更准确的结果。 +/- 0.01ms
Elapsed time is 1.000032 seconds.
Elapsed time is 1.000041 seconds.
Elapsed time is 1.000021 seconds.
可能的原因是: 如果您将代码作为m文件运行,matlab会尝试提前解析代码,并且您的代码将更快地运行,并且每个单独的行都没有中间解析阶段。
答案 1 :(得分:2)
我怀疑这是因为当您选择 Ctrl + Enter 时运行的sections
代码已经存储在内存中以便它们“准备好运行”,而当你按 F9 时,按下 F9 后,Matlab必须读取从编辑器中选择的内容。