清除临时变量可以从MATLAB中获益吗?

时间:2015-11-24 15:59:06

标签: performance matlab temp-tables

MATLAB有一个烦人的功能,有时需要你创建临时变量,例如Volvo 142E,为了创建在另一个变量中使用的东西,之后在代码中的其他地方不使用临时变量。在临时变量完成其工作后使用temporary_variable是否有性能优势?处理这种情况最有效的方法是什么?感谢您的见解!

2 个答案:

答案 0 :(得分:3)

几条评论:

  1. 除非您的内存不足,否则清除变量几乎肯定不会有助于提高性能。
  2. 根据我的经验,临时变量激增的问题在于它对编程错误的贡献。例如。你有一个拼写错误,写x而不是X,但你的代码没有立即抛出错误,因为你之前定义了x
  3. 那就是说,我几乎从不打算在MATLAB脚本中清除临时变量。
  4. 保持工作区清洁的提示(主要是为了帮助减少编码错误)

    1. 在脚本开头使用clear命令。 (这会减少Heisenbug代码有效或无法运行的问题,具体取决于您在运行脚本之前所执行的操作...)
    2. 将大部分/大部分代码放在用户定义的functions中。一旦函数结束,函数的局部变量就会自动超出范围(即消失),并且在函数内,您不能错误地访问工作区中您不应该访问的变量。

答案 1 :(得分:0)

我想说,避免在太大的情况下创建临时变量是一种好习惯。我想我真的不需要详细说明它为什么不好。在大多数情况下,有些替代品不需要临时变量。如果仍然需要临时变量,它们在许多情况下仅使用一次。在这种情况下,您可以将需要写入的表达式合并到一个表达式中(如果它不会变得混乱)

a = 1:10;
b = a(a>5);

这仍将创建此临时变量,但您不必清除它。 Matlab自己做了这个清理工作。但是,如果时间成为问题,则很可能是由于设计问题或功能太大。我注意到大量内存消耗的唯一问题是内存问题。我的经验是,您在内存中存储的信息越多,程序执行的速度就越快。重新计算一些东西需要花费很多时间。但是,在大多数情况下,需要在内存效率和处理效率之间进行权衡。