在Matlab 2014b
中,当我在脚本开头使用CLEAR ALL
时,我收到以下警告,
For improved performance, consider not using CLEAR ALL within a script
以前的版本中没有给出(我记得)。
我发现的唯一原因是,当您从外部或其他脚本调用脚本时,您不想清除工作区中的变量,并且每次都重复生成它们。
我还有其他原因吗?
在使用单个脚本时,删除CLEAR ALL
如何提高性能?
答案 0 :(得分:16)
在R2015b中,clear
的语义发生了变化。也许是为了回应这个问题中提出的问题,changes stated in the release notes是:
clear
函数不再清除调试断点。要清除断点,请使用dbclear all
。
clear
函数仅清除当前未运行的函数。例如,当clear myFun
正在运行时拨打myFun
时,myFun
不会被清除。
这部分属于R2015b之前的MATLAB版本。
Here's a table每个输入参数清除的内容。
R2015b的表格完全相同,只是不再有“调试断点”列,因为它们不再用clear
清除。
当您可能只有clear variables
(红色框)时,将清除脚本和函数。从当前正在执行的内存中清除函数没有多大意义。 (根据R2015b发布说明,这不会发生。)
另外,请记住脚本在基础工作区中执行,您将清除其他脚本可能使用的所有功能。在扩展的MATLAB修补会话之后尝试查看inmem
的输出。您将查找加载到内存中以便快速访问的各种MATLAB函数(包括'matlabrc'
,'pathdef'
和其他设置工作区的核心脚本。所以,也许并不是它会影响你调用clear all
的脚本的性能,而是所有其他脚本和基础工作区中的交互式命令行。这就是我的猜测。
与性能无关,但脚本中clear all
可能是个坏主意的另一个原因是它会清除断点(这可能很烦人!),以及全局+持久变量。但是,可能是清除全局变量和持久变量的目标。对于全局存在clear global
,但由于持久变量与函数绑定,因此对于持久变量没有任何意义,因为它们会使用clear functions
或clear whateverFunctionName
。