使用Ruby'include?'的性能方法

时间:2011-06-25 03:35:43

标签: ruby arrays performance hash

如果我有这样的话,我想知道include?方法可以对效果产生多大影响:

array = [<array_values>]           # Read above for more information

(0..<n_iterations>).each { |value| # Read above for more information
  array.include?(value)
}

如果<array_values>为10,100和1.000,<n_iterations>为10,100,1000。

2 个答案:

答案 0 :(得分:12)

使用Set(或等效的Hash)代替数组,以便includeO(1)而不是O(n)

或者,如果您要执行多个include,则可以使用数组交集&或减法-,这将构建一个临时Hash来有效地执行操作。< / p>

答案 1 :(得分:1)

我认为ruby-prof可能是一个很好的起点。但是,如果没有别的东西可以比较,那么性能数据将没有用。如同,“这种方法的表现比[其他方法] 好还是差?”

另外,请注意,由于n_iterations增加的数量大于数组的大小,由于#include的数量很多,这段代码可能会表现得更好?调用

array.each do |value|
  (0..<n_iterations>).map.include?(value)
end