通过删除CLEAR ALL来提高性能

时间:2014-12-15 13:45:41

标签: performance matlab

Matlab 2014b中,当我在脚本开头使用CLEAR ALL时,我收到以下警告,

For improved performance, consider not using CLEAR ALL within a script

以前的版本中没有给出(我记得)。

我发现的唯一原因是,当您从外部或其他脚本调用脚本时,您不想清除工作区中的变量,并且每次都重复生成它们。

我还有其他原因吗?

在使用单个脚本时,删除CLEAR ALL如何提高性能?

1 个答案:

答案 0 :(得分:16)

在R2015b中,clear的语义发生了变化。也许是为了回应这个问题中提出的问题,changes stated in the release notes是:

  

clear函数不再清除调试断点。要清除断点,请使用dbclear all

     

clear函数仅清除当前未运行的函数。例如,当clear myFun正在运行时拨打myFun时,myFun不会被清除。


这部分属于R2015b之前的MATLAB版本。

Here's a table每个输入参数清除的内容。

enter image description here

R2015b的表格完全相同,只是不再有“调试断点”列,因为它们不再用clear清除。

当您可能只有clear variables(红色框)时,将清除脚本和函数。从当前正在执行的内存中清除函数没有多大意义。 (根据R2015b发布说明,这不会发生。)

另外,请记住脚本在基础工作区中执行,您将清除其他脚本可能使用的所有功能。在扩展的MATLAB修补会话之后尝试查看inmem的输出。您将查找加载到内存中以便快速访问的各种MATLAB函数(包括'matlabrc''pathdef'和其他设置工作区的核心脚本。所以,也许并不是它会影响你调用clear all的脚本的性能,而是所有其他脚本和基础工作区中的交互式命令行。这就是我的猜测。

与性能无关,但脚本中clear all可能是个坏主意的另一个原因是它会清除断点(这可能很烦人!),以及全局+持久变量。但是,可能是清除全局变量和持久变量的目标。对于全局存在clear global,但由于持久变量与函数绑定,因此对于持久变量没有任何意义,因为它们会使用clear functionsclear whateverFunctionName