我有一个元素数组,每个元素都有一个属性:image。什么是从Ruby中的对象数组中提取嵌套对象数组的方法?>
我想要一个数组:图像,所以最快和最便宜的方式来实现这一点。难道仅仅是遍历所有数组,每个元素推到一个新的数组,这样的:
images = []
elements.each {|element| images << element.image}
我有一个元素数组,每个元素都有一个属性:image。什么是从Ruby中的对象数组中提取嵌套对象数组的方法?>
我想要一个数组:图像,所以最快和最便宜的方式来实现这一点。难道仅仅是遍历所有数组,每个元素推到一个新的数组,这样的:
images = []
elements.each {|element| images << element.image}
您可以使用Benchmark module来测试这些类型的东西。我跑@ sepp2k的版本对你原来的代码如下所示:
require 'benchmark'
class Element
attr_accessor :image
def initialize(image)
@image = image
end
end
elements = Array.new(500) {|index| Element.new(index)}
n = 10000
Benchmark.bm do |x|
x.report do
n.times do
# Globalkeith's version
image = []
elements.each {|element| image << element.image}
end
end
# sepp2k's version
x.report { n.times do elements.map {|element| element.image} end }
end
输出我的机器是一致的(经过3次多运行)非常接近这个上:
user system total real
2.140000 0.000000 2.140000 ( 2.143290)
1.420000 0.010000 1.430000 ( 1.422651)
因此证明map
比数组稍大并且操作执行多次时手动追加到数组要快得多。
感谢兄弟,这是一个非常有用的回复! – ktec 2010-07-01 14:10:10
不客气!很高兴我可以帮助:) – 2010-07-01 16:40:16