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

実際のオブジェクトは、それらを参照する変数よりもメモリに大きな影響を与える可能性があります。

変数の有効期間は、そのスコープによって決まります。

  • ローカル
  • 閉鎖
  • 物体
  • クラス
  • 絶え間ない
  • グローバル

ただし、オブジェクトは、それを参照するすべての変数がなくなった場合にのみ、ガベージコレクタによって解放されます。また、おそらく参照よりもはるかに多くのメモリを消費します。

変数は、オブジェクトを識別する数値と考えることができます。彼らが使用するメモリは無視できるほど小さいです。通訳もそれらを最適化するかもしれないと思います。

def touch_updated_at
  model_name.touch
end

この使用法ではメモリ使用量は大幅に改善されません、はるかに簡潔です。

于 2012-04-14T12:15:02.990 に答える
1

それは、この変数の数に依存します。通常、どちらの場合も違いはありません。

于 2012-04-14T08:15:51.560 に答える
1

私は Ruby インタープリターの実装者ではありませんが、まったく同じだと思います。

一時的なローカル変数は、名前が付けられているかどうかに関係なく、それ以前にガベージ コレクションされる可能性は低くなります。

aもちろん、実際にプロパティでない限り。

このコードの速度やメモリ使用量を変更したい場合は、コードがどのように見えるかよりも、コードが何をするかを気にする必要があります。

于 2012-04-14T08:20:08.277 に答える