2011-03-04 84 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 

因为我将创造50000个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

您拼写'attr_accessor'为'att_accessor'。 – 2011-03-04 08:51:47

+0

除了Andrew的回答,为什么你需要同时将所有50000个实例化呢? – 2011-03-04 10:09:47

回答

3

对象的实例不包含其实例方法的副本,因此对象具有的实例方法的数量不会影响性能。

+0

有没有办法找出员工对象的大小? – user612308 2011-03-05 01:23:37

+0

请参阅“[如何测量Ruby对象的大小?](http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object)”。 – 2011-03-05 01:57:26

+0

谢谢安德鲁! – user612308 2011-03-05 05:03:44