按F9时为什么matlab执行时间不同

时间:2018-02-05 14:21:12

标签: matlab time

我有一个非常简单的情况,其中matlab执行时间根据我运行代码的方式而有所不同:

tic
pause(1)
toc

如果我在脚本上按 Ctrl + Enter ,我会得到类似的内容:

Elapsed time is 1.000241 seconds.

如果我选择代码并按 F9 ,我会得到类似的内容:

Elapsed time is 1.025203 seconds

我注意到25ms的时差是可重复的。

2 个答案:

答案 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必须读取从编辑器中选择的内容。