我注意到第一次运行脚本比第二次和第三次需要更多的时间1。在这个问题中提到了“预热(warm-up)”,但没有解释。
为什么代码在“预热”之后会更快运行?
我没有clear all
在每个函数调用之间清除所有内容2,但是输入参数对于每个函数调用都有所改变。有人知道为什么吗?
1. 我的许可证是本地的,所以这不是与许可证检查相关的问题。
2. 实际上,即使我clear all
,行为也不会改变。
我注意到第一次运行脚本比第二次和第三次需要更多的时间1。在这个问题中提到了“预热(warm-up)”,但没有解释。
为什么代码在“预热”之后会更快运行?
我没有clear all
在每个函数调用之间清除所有内容2,但是输入参数对于每个函数调用都有所改变。有人知道为什么吗?
1. 我的许可证是本地的,所以这不是与许可证检查相关的问题。
2. 实际上,即使我clear all
,行为也不会改变。
[M,X,C] = inmem('-completenames')
clear all
并不一定会清除以上所有内容,更不用说被锁定的函数了...Matlab是解释执行的。如果你不预热代码,那么由于解释而非实际算法,你会浪费很多时间。这可能会严重影响计时结果。
至少运行一次代码将使Matlab能够真正编译适当的代码段。
vec
不仅在代码第一次执行时增长,而且每次执行代码时都会增长。 - Sam Robertsvec
已经存在。如果它在一个函数中,它会在每次执行代码时增长,而不仅仅是第一次。 - Sam Robertsvec
。如果您在脚本中使用循环来初始化 vec
,则它将在脚本第一次运行时增长,并且在第二次(以及所有后续)运行时不会更改大小。 - Shai
clear all
操作吗?我还没有注意到明显的差异,但我也没有“填满”缓冲区... - Stewie Griffintimeit
函数是最好的方法。除其他事项外,它还为您处理了所有你所描述的“预热”问题。 - Sam Roberts