【问题标题】:Increase the performance by removing CLEAR ALL通过删除 CLEAR ALL 来提高性能
【发布时间】:2014-12-15 13:45:41
【问题描述】:

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

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

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

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

还有什么我失踪的原因吗?

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

【问题讨论】:

  • 当使用那个单一的脚本一次?大概什么都没有。但是clear all 不仅清除变量,而且还加载了函数和 mex 函数(如果我没记错的话,还有断点,它们是在该脚本中设置的)。必须再次加载这些函数(这只会花费一些时间),断点已经消失,并且很难调试以clear all 开头的脚本。为确保从干净的工作区开始,clear variables 就足够了。
  • 我敢打赌,如果您使用 clear,您不会收到该警告。正如 Nras 解释的那样,原因是 clear all 也清除了函数。 clear 只清理变量。因此编译的函数保存在内存中。有一个look here 了解更多信息。 Amro 的回答特别有趣。 =)

标签: performance matlab


【解决方案1】:

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

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

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


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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2014-11-25
    相关资源
    最近更新 更多