【发布时间】:2014-12-02 13:12:29
【问题描述】:
我在this question 中初始化了一个哈希并运行了一些基准测试。
Benchmark.measure { a = h.keys }
#=> 0.010000 0.000000 0.010000 ( 0.019832)
Benchmark.measure { a.each { |k| } }
#=> 0.060000 0.000000 0.060000 ( 0.057262)
Benchmark.measure { h.each { |k, v| } }
#=> 0.320000 0.000000 0.320000 ( 0.319768)
Benchmark.measure { h.each_key { |k| } }
#=> 0.310000 0.000000 0.310000 ( 0.312656)
Benchmark.measure { h.each_pair { |k, v| } }
#=> 0.330000 0.000000 0.330000 ( 0.331452)
我曾认为将散列转换为键数组会更慢,但事实并非如此,each_key 的性能与each 相似。为什么是这样?最好的方法是什么?
【问题讨论】:
-
最好的方法是什么?不用担心,因为如果您的代码块中有实际代码,它不会成为您的瓶颈。
-
请注意,
a.each { |k| }所做的事情与其他人非常不同:它不返回键,而是键值对。 -
我的答案是您想要的吗?
标签: ruby arrays hash benchmarking