1
这里是我的脚本堆栈水平红宝石阵太深VS哈希测试
require 'benchmark'
require 'ostruct'
Benchmark.bmbm do |x|
n=10000
array = n.times.map{ |i| OpenStruct.new id: i }
hash = Hash[*(array.map{ |s| [s.id, s] }.flatten)]
x.report('array') do
array.find{ |s| s.id == 100}
end
x.report('hash') do
hash[100]
end
end
为什么用n=100000
我得到:
stack level too deep (SystemStackError)
?
不相关,但是,我是以最好的方式构建散列吗?
哈希查找总是比'阵列快。 find'和'OpenStruct'不是正确的使用方法,因为它使用'method_missing'来构建它的属性 – bjhaid
@bjhaid我认为任何基准测试都不一定是“愚蠢的”。有人找到并证明哈希查找速度更快的更好方法是什么? –
什么是正确的事情? – juanpastas