Performance 清除临时变量对MATLAB性能有何好处?

Performance 清除临时变量对MATLAB性能有何好处?,performance,matlab,temp-tables,Performance,Matlab,Temp Tables,MATLAB有一个恼人的特性,即有时需要创建临时变量,例如,临时变量,以便创建要在另一个变量中使用的内容,之后临时变量就不会在代码中的任何其他地方使用。在临时变量完成其工作后,使用清除临时变量是否有性能优势?处理这种情况最有效的方法是什么?谢谢你的洞察力 我想说,避免创建临时变量是一种很好的做法,以防它们太大。我想我真的不需要详细说明它为什么不好。在大多数情况下,存在不需要临时变量的替代方案。如果仍然需要临时变量,在许多情况下,它们只使用一次。在这种情况下,您可以将需要编写的表达式合并到单个表达

MATLAB有一个恼人的特性,即有时需要创建临时变量,例如,
临时变量
,以便创建要在另一个变量中使用的内容,之后临时变量就不会在代码中的任何其他地方使用。在临时变量完成其工作后,使用
清除临时变量
是否有性能优势?处理这种情况最有效的方法是什么?谢谢你的洞察力

我想说,避免创建临时变量是一种很好的做法,以防它们太大。我想我真的不需要详细说明它为什么不好。在大多数情况下,存在不需要临时变量的替代方案。如果仍然需要临时变量,在许多情况下,它们只使用一次。在这种情况下,您可以将需要编写的表达式合并到单个表达式中(以防它不会变得凌乱)

这仍然会创建这个临时变量,但您不必清除它。Matlab自己做这个清理。然而,如果临时性成为一个问题,很可能是由于设计问题或太大的功能。我注意到的内存消耗过大的唯一问题是内存问题。我的经验是,存储在内存中的信息越多,程序执行得越快。重新计算某些东西需要很多时间。然而,在大多数情况下,在内存效率和处理效率之间有一个折衷。

几点意见:
  • 除非内存不足,否则清除变量几乎肯定不会提高性能
  • 根据我的经验,临时变量激增的问题在于它会导致编程错误。例如,您有一个输入错误,写的是
    x
    而不是
    x
    ,但是您的代码不会立即抛出错误,因为您以前定义了
    x
  • 也就是说,在编写MATLAB脚本时,我几乎从不费心清除临时变量
  • 保持工作区整洁的提示(主要是帮助减少编码错误)
  • 在脚本开头使用
    clear
    命令。(这将减少代码工作或不工作的问题,具体取决于您在运行脚本之前所做的操作…)
  • 将大部分/大部分代码放在用户定义的代码中。函数结束后,函数的局部变量会自动超出范围(即消失),在函数中,您不能错误地访问工作区中不应该访问的变量

  • 我倾向于删除它们以保持清晰(消除混乱)和安全(防止意外访问根本不应该存在的变量)。不过,了解性能是否受到影响将是一件有趣的事情。有趣的问题删除它们是一种很好的做法,因为它们会占用一些内存(虽然不是很多),而且,如果您使用IDE或一些MatlabJava接口,垃圾收集器会收集到这些内存,如果JVM太大,可能会导致JVM崩溃。这是一个很好的实践,但我不认为它会影响几乎所有情况下代码的运行。但这也可能迫使MATLAB在它之前为其创建了头的数组上执行深度复制。这要视情况而定。你在创建多少个临时变量,每个临时变量占用多少MB的RAM?实际上,我只是为我的当前程序创建了一个临时变量,所以它可以忽略不计,但它只是让我想到了什么是一般的好做法。就我个人而言,我并不觉得临时变量像某些变量那样令人讨厌。当您不再有足够的RAM为阵列分配连续内存时,就会出现主要问题。(还有一个问题是太多的变量使你的工作空间变得杂乱无章,但这是一个完全不同的问题。)你看过这个了吗?技巧2实际上是最重要的一个。
    a = 1:10;
    b = a(a>5);