2012-04-14 14 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 

、それはるかに簡潔です。

関連する問題