Ruby对象,减少内存使用
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
对象的实例不包含其实例方法的副本,因此对象具有的实例方法的数量不会影响性能。
有没有办法找出员工对象的大小? – user612308 2011-03-05 01:23:37
请参阅“[如何测量Ruby对象的大小?](http://stackoverflow.com/questions/3973094/how-to-measure-the-size-of-a-ruby-object)”。 – 2011-03-05 01:57:26
谢谢安德鲁! – user612308 2011-03-05 05:03:44
您拼写'attr_accessor'为'att_accessor'。 – 2011-03-04 08:51:47
除了Andrew的回答,为什么你需要同时将所有50000个实例化呢? – 2011-03-04 10:09:47