通过减少使用变量来节省或释放内存?

时间:2012-04-14 08:07:18

标签: ruby performance memory

我想知道减少变量的数量是否会大大节省或释放内存。有时我会在可读代码或性能之间徘徊。

例如在Ruby中,编写代码更好:

  def touch_updated_at
    a = self.model_name
    a.touch
  end

或者这个:

  def touch_updated_at
    self.model_name.touch
  end

考虑到此功能仅用于型号或控制器。无需传递它来查看。请指教。

谢谢。

3 个答案:

答案 0 :(得分:1)

这取决于这些变量的数量。通常情况下,两种情况都没有区别。

答案 1 :(得分:1)

我不是任何ruby解释器的实现者,但我认为它们完全一样。

临时局部变量不太可能在之前被垃圾收集,无论它是否被命名。

除非a实际上是属性,否则

如果您想更改此代码的速度或内存使用情况,您应该更少关注它的外观以及它的功能。

答案 2 :(得分:1)

实际对象可能比引用它们的变量对内存产生更大的影响。

变量的生命周期由其范围决定:

  • 本地
  • 封闭
  • 对象
  • 全局

但是,当引用它的所有变量都消失时,对象才会被垃圾收集器释放。此外,它们可能会比参考消耗更多的内存。

您可以将变量视为标识对象的数字。他们使用的内存小到可以忽略不计。我想解释器也可以优化它们。

def touch_updated_at
  model_name.touch
end

即使这种用法不会显着提高内存使用率,但 更加简洁。