Performance 通过删除“全部清除”来提高性能

Performance 通过删除“全部清除”来提高性能,performance,matlab,Performance,Matlab,在Matlab 2014b中,当我在脚本开头使用CLEAR ALL时,我得到以下警告: For improved performance, consider not using CLEAR ALL within a script 我记得以前的版本中没有给出 我发现的唯一原因是,当您从外部或其他脚本调用脚本时,您不希望清除工作区中的变量,并一次又一次地重新生成它们 我失踪还有其他原因吗 在使用单个脚本时,删除“全部清除”如何提高性能?在R2015b中,清除的语义已更改。也许是为了回应这一问题中提

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

For improved performance, consider not using CLEAR ALL within a script
我记得以前的版本中没有给出

我发现的唯一原因是,当您从外部或其他脚本调用脚本时,您不希望清除工作区中的变量,并一次又一次地重新生成它们

我失踪还有其他原因吗


在使用单个脚本时,删除“全部清除”如何提高性能?

在R2015b中,清除的语义已更改。也许是为了回应这一问题中提出的关切,以下是:

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

清除功能仅清除当前未运行的功能。例如,当您在myFun运行时调用clear myFun时,myFun不会被清除

本部分适用于R2015b之前的MATLAB版本

每个输入参数清除的内容

R2015b的表是相同的,只是不再有调试断点列,因为它们不再被清除

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

另外,请记住脚本在基本工作区中执行,您正在清除其他脚本可能使用的所有函数。在一个扩展的MATLAB修补会话之后,尝试查看inmem的输出。您可以找到加载到内存中用于快速访问的各种MATLAB函数,包括“matlabrc”、“pathdef”和其他设置工作区的核心脚本。所以,也许这并不是因为它只会影响脚本的性能,在脚本中,除了所有其他脚本之外,您可以调用所有其他脚本以及基本工作区中的交互式命令行。那是我的猜测


与性能无关,但脚本中的“全部清除”可能是个坏主意的另一个原因是它会清除断点—这可能很烦人!,和全局+持久变量。然而,其目标可能是清除全局变量和支架内变量。对于global,有clear global,但对于persistent,则没有类似的功能,因为persistent变量绑定到函数,您可以使用clear函数或clear whateverFunctionName作为它们的名称。

当使用单个脚本一次时?可能没什么。但是clear all不仅清除变量,而且还清除加载的函数和mex函数,如果我没记错的话,还清除脚本中设置的断点。这些函数必须再次加载,这只需要花费一点时间,断点已经消失,并且将使调试脚本变得很困难,而脚本以“全部清除”开头。为了确保从一个干净的工作区开始,清除变量就足够了。我打赌如果使用clear,您不会得到警告。原因是,正如Nras所解释的,清除所有清除函数。清除仅清除变量。因此,编译后的函数保存在内存中。有更多的信息,请访问。阿姆罗的回答特别有趣=