2012-04-14 56 views
0

我不知道是否减少变量的数量将大大节省或释放内存。有时我会在可读代码或性能之间撕裂。通过减少变量的使用来保存或释放内存?

例如在红宝石,是更好的代码此:

def touch_updated_at 
    a = self.model_name 
    a.touch 
    end 

或该:

def touch_updated_at 
    self.model_name.touch 
    end 

以在考虑到这个函数是在模型或控制器仅使用。无需通过它来查看。请指教。

谢谢。

回答

1

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

1

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

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

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

如果您想更改此代码的速度或内存使用情况,请不必担心它的外观以及它的功能。

1

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

变量的寿命是由它的范围确定:

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

但是,对象只有在引用它的所有变量都消失后才能被垃圾收集器释放。而且,他们可能会比参考消耗更多的内存。

您可以将变量看作标识对象的数字。他们使用的内存很小,可以忽略不计。我想解释者可能也会优化它们。

def touch_updated_at 
    model_name.touch 
end 

即使这种用法不会显著提高内存使用,它简洁得多。