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

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

Matlab2014b
中,当我在脚本开头使用
清除所有
时,我得到以下警告:

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

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

我失踪还有其他原因吗


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

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

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

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


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

每个输入参数清除的内容

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

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

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


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

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