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

Ruby 通过减少变量的使用来节省或释放内存?,ruby,performance,memory,Ruby,Performance,Memory,我想知道减少变量的数量是否会大大节省或释放内存。有时我在可读代码和性能之间左右为难 例如,在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
实际上是一个属性


如果你想改变这段代码的速度或内存使用,你应该少担心它的外观,多关心它的功能。

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

临时局部变量不太可能在更早的时候被垃圾收集,不管它是否命名

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


如果您想更改此代码的速度或内存使用率,您应该少担心它的外观,多关心它的功能。

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

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

  • 本地的
  • 关闭
  • 反对
  • 阶级
  • 不变的
  • 全球的
但是,只有当引用对象的所有变量都消失时,垃圾收集器才会释放对象。而且,它们可能会比引用消耗更多的内存

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

def touch_updated_at
  model_name.touch
end

尽管这种使用不会显著提高内存使用率,但它要简洁得多。

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

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

  • 本地的
  • 关闭
  • 反对
  • 阶级
  • 不变的
  • 全球的
但是,只有当引用对象的所有变量都消失时,垃圾收集器才会释放对象。而且,它们可能会比引用消耗更多的内存

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

def touch_updated_at
  model_name.touch
end
尽管这种使用不会显著提高内存使用率,但它要简洁得多