我想知道减少变量的数量是否会大大节省或释放内存。有时我在可读代码或性能之间左右为难。
例如在 Ruby 中,这样编码是否更好:
def touch_updated_at
a = self.model_name
a.touch
end
或这个:
def touch_updated_at
self.model_name.touch
end
考虑到此功能仅在模型或控制器中使用。无需将其传递给查看。请指教。
谢谢你。
我想知道减少变量的数量是否会大大节省或释放内存。有时我在可读代码或性能之间左右为难。
例如在 Ruby 中,这样编码是否更好:
def touch_updated_at
a = self.model_name
a.touch
end
或这个:
def touch_updated_at
self.model_name.touch
end
考虑到此功能仅在模型或控制器中使用。无需将其传递给查看。请指教。
谢谢你。
这取决于这个变量的数量。通常,这两种情况都没有区别。
我不是任何 ruby 解释器的实现者,但我认为它们完全相同。
临时局部变量不太可能更早被垃圾收集,无论它是否命名。
当然,除非a
实际上是一个属性。
如果您想更改此代码的速度或内存使用情况,您应该少担心它的外观,而多关注它的作用。
与引用它们的变量相比,实际对象对内存的影响可能更大。
变量的生命周期由其作用域决定:
然而,只有当所有引用它的变量都消失时,垃圾收集器才会释放对象。此外,它们可能会比引用消耗更多的内存。
您可以将变量视为标识对象的数字。他们使用的内存小到可以忽略不计。我想解释器也可能会优化它们。
def touch_updated_at
model_name.touch
end
尽管这种用法不会显着提高内存使用率,但它更加简洁。