2
在Ruby中使用Structs(与Arrays,Hashes等相比)时,您会遇到什么性能开销?红宝石结构 - 性能开销?
在Ruby中使用Structs(与Arrays,Hashes等相比)时,您会遇到什么性能开销?红宝石结构 - 性能开销?
我试图运行下面的几次(以下约克的评论这已被更新为使用一个固定的变量的值,而不是创建大量字符串):
require 'benchmark'
Example = Struct.new("Example", :value)
struct = Example.new
hash = {}
value = "The value"
n = 5000000
Benchmark.bm do |m|
# test assignment and access for Hash and Struct
m.report { n.times do; hash[:value] = value; end }
m.report { n.times do; struct.value = value; end }
end
更新
它似乎有足够大的值n
Struct稍微慢一点,但我无法想象这在实践中会引人注意或是一个问题。
如果你的基准是由创建(和垃圾收集!)200万字符串的开销所支配的,我不会感到惊讶。 – 2010-07-07 13:34:17
好点。如果我们使用单个字符串作为值而不是每次创建新字符串,您认为这会是更好的方法吗? (我将编辑答案) – mikej 2010-07-07 14:14:11
不,我认为如果OP自己简单地完成了这项工作,他*真实*环境中的* actual *代码在*真实*负载下的实际* Ruby实现上进行基准测试会更好。因为其他一切都只是假的。 – 2010-07-07 19:33:50