2010-07-07 77 views

回答

2

我試圖運行下面的幾次(以下約克的評論這已被更新爲使用一個固定的變量的值,而不是創建大量字符串)

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 

更新

它似乎有足夠大的值nStruct稍微慢一點,但我無法想象這在實踐中會引人注意或是一個問題。

+0

如果你的基準是由創建(和垃圾收集!)200萬字符串的開銷所支配的,我不會感到驚訝。 – 2010-07-07 13:34:17

+1

好點。如果我們使用單個字符串作爲值而不是每次創建新字符串,您認爲這會是更好的方法嗎? (我將編輯答案) – mikej 2010-07-07 14:14:11

+2

不,我認爲如果OP自己簡單地完成了這項工作,他*真實*環境中的* actual *代碼在*真實*負載下的實際* Ruby實現上進行基準測試會更好。因爲其他一切都只是假的。 – 2010-07-07 19:33:50