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 ではどっちでも(速度的には)関係なさそうですね。