2011-03-04 10 views
0
class Employee 
    attr_accessor :id, :salary, :birthday... # about 10 more attribures 

    def qualify_for_raise? ..... end 

    def qualify_for_promotion? ..... end 

    # 10 more instance method 
end 

class Review 
    def review(employee_array) 
    employee_array.map do |employee| 
     if employee.qualify_for_raise? 
     # ... 
     end 
     if employee.qualify_for_promotion? 
     # ... 
     end 
     # ... 
    end 
    end 
end 

私は50,000のEmployeeオブジェクトを作成するので、各Employeeオブジェクトにはインスタンスメソッドのコピーがあるため、すべてのインスタンスメソッドをEmployeeクラスから取り除く方が良いでしょうか?それが本当であれば、私は以下のようなクラスを設計しました。私は、Employeeクラス自体の内部でEmployeeデータを操作するメソッドを宣言する方が好きです。インスタンスメソッドの有無にかかわらずEmployeeオブジェクトのサイズを調べる方法はありますか?Rubyオブジェクトでメモリ使用量を減らす

class Employee 
    att_accessor :id, :salary, :birthday... # about 10 more attribures 
end 

class Review 
    def review(employee_array) 
    employee_array.map do |employee| 
     if is_qualify_for_raise(employee) 
     # ... 
     end 
     if is_qualify_for_promotion(employee) 
     # ... 
     end 
     # ... 
    end 
    end 

    def is_qualify_for_raise(employee) ..... end 
    def is_qualify_for_promotion(employee) ..... end 
    # 10 more methods 
end 
+0

'att_accessor'の' att_accessor'のスペルが間違っています。 –

+0

Andrewの答えに加えて、なぜ同時に50000ものインスタンスをすべてインスタンス化する必要がありますか? –

答えて

3

オブジェクトのインスタンスにはインスタンスメソッドのコピーが含まれていないため、オブジェクトが持つインスタンスメソッドの数はパフォーマンスに影響しません。

+0

従業員オブジェクトのサイズを調べる方法はありますか? – user612308

+0

「[Rubyオブジェクトのサイズを測定する方法](http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object)」を参照してください。 –

+0

ありがとうアンドリュー! – user612308

関連する問題