WHITELEAF:Kindle応援サイト

KindleでWEB小説を読もう! Narou.rb 公開中

push or <<

Array に要素を挿入するメソッドは push ですが、<< でも同じことが出来ます。どっちが速いでしょうか。

require "benchmark"

Benchmark.bm { |bm|
  bm.report("push") {
    a = []
    5000000.times { |i|
      a.push(i)
    }
  }
  bm.report(" << ") {
    a = []
    5000000.times { |i|
      a << i
    }
  }
}
ruby 1.9.2dev (2010-04-27 trunk 27505) [i386-mingw32]
      user     system      total        real
push  1.000000   0.015000   1.015000 (  1.031250)
 <<   0.703000   0.032000   0.735000 (  0.750000)
ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mswin32]
      user     system      total        real
push  2.219000   0.031000   2.250000 (  2.312500)
 <<   2.219000   0.016000   2.235000 (  2.265625)

Ruby1.9.2 では 30% ほど << のが速いという結果になりました。これは積極的に << を使っていきたいところです。
そして Ruby 1.8.7 ではまったく差が開きませんでした。1.8.7 ではどっちでも(速度的には)関係なさそうですね。