0

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

例如在 Ruby 中,这样编码是否更好:

  def touch_updated_at
    a = self.model_name
    a.touch
  end

或这个:

  def touch_updated_at
    self.model_name.touch
  end

考虑到此功能仅在模型或控制器中使用。无需将其传递给查看。请指教。

谢谢你。

4

3 回答 3

1

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

于 2012-04-14T08:15:51.560 回答
1

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

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

当然,除非a实际上是一个属性。

如果您想更改此代码的速度或内存使用情况,您应该少担心它的外观,而多关注它的作用。

于 2012-04-14T08:20:08.277 回答
1

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

变量的生命周期由其作用域决定:

  • 当地的
  • 关闭
  • 目的
  • 班级
  • 持续的
  • 全球的

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

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

def touch_updated_at
  model_name.touch
end

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

于 2012-04-14T12:15:02.990 回答