Hatena::Grouprubyist

trotrの日記

 | 

2008-03-28

*includeというmethodの存在に気づかなかった。

配列内に自分の指定する値が存在するかどうかを調べるだけなら、Array#include?を使うべきだったみたい。

今までは、以下のような書き方をしていた。

a.find{|e| e == i}  #ここで i が調べたい値

**速度比較

require 'benchmark'
Benchmark.bmbm do |x|
  n = 1000
  a = (1..1000).to_a
  a.each_index{ |i| j = rand(i+1); a[i], a[j] = a[j], a[i]}
  x.report("find"){ n.times{ |i| a.find{ |e| e == i}}}
  x.report("include?"){ n.times{ |i| a.include?(i)}}
end
# >> Rehearsal --------------------------------------------
# >> find       0.900000   0.190000   1.090000 (  1.090316)
# >> include?   0.090000   0.000000   0.090000 (  0.093744)
# >> ----------------------------------- total: 1.180000sec
# >> 
# >>                user     system      total        real
# >> find       0.850000   0.190000   1.040000 (  1.044942)
# >> include?   0.090000   0.000000   0.090000 (  0.093762)

ゲスト



トラックバック - http://rubyist.g.hatena.ne.jp/trotr/20080328
 |