【发布时间】:2015-04-21 10:56:05
【问题描述】:
我经常检查一个特定的值是否在一个大数组中。我可以通过Array#index 做到这一点。为了提高效率,我创建了一个数组值的散列并调用Hash#has_key?:
-
方法一
arr = ["a","b","c","d"] arr.index("c") -
方法二
h = {"a"=> true, "b"=> true, "c"=> true, "d"=> true} h.has_key?("c")
但我注意到,如果键不在给定的哈希中,ruby 会抛出异常。我想知道这两种方法的相对性能是什么。
【问题讨论】:
-
为什么不自己找出最适合您情况的方法呢? ruby-doc.org//stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html
-
不知道为什么你认为 ruby 会在密钥不在散列中时抛出异常(除非你故意使用
h.fetch) -
h["a"]不会在您的示例代码中引发异常;它只会返回nil -
奇怪...由于某种原因,当我第一次尝试时,我获得了豁免。原来我忘记了“?”在 has_key 中,并没有很好地注意错误。对不起!
-
你的意思不是很清楚。是您的第二种方法引发错误的问题吗?那部分没有复制。如果您的问题仅与性能有关,那么您应该删除第一点。
标签: ruby arrays performance hash