为什么在按F9时MATLAB执行时间有所不同



我的情况很简单,其中matlab执行时间取决于我运行代码的方式:

tic
pause(1)
toc

如果我按 ctrl enter 在脚本上,我会得到类似的东西:

Elapsed time is 1.000241 seconds.

如果我选择代码并按 f9 ,我会得到类似的东西:

Elapsed time is 1.025203 seconds

我注意到25毫秒的时间差,可再现。

如果您在MATLAB"命令窗口"中复制并经过代码,您会看到很大的差异将运行代码作为M文件进行比较。

在我的计算机上(英特尔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尝试提前将代码置于代码,并且您的代码将更快地运行,并且每个线路都没有中间解析阶段。

i 可疑这是由于当您选择 ctrl 输入时运行的代码的sections已经存储在内存中,因此它们"准备运行",而当您按 f9 时,MATLAB必须在按 f9 之后读取从编辑器中选择的内容。。

最新更新