Ruby 2.0の大きな特徴の1つとして、requireの高速化が挙げられています。
Rails開発で起動速度に直結するので、非常にうれしいポイントです。
どのくらい速くなったのか、超簡単なサンプルで試してみました。
ソースコードはこれです。
1.upto(10000) do |i| require "./lib/a#{i}" end
あらかじめ、lib以下にa1.rb~a100000.rbの約10万個のファイルを置いてあります。
各ファイルの中身は、それぞれ「a1=1」「a2=2」...「a100000=100000」と書いてあるだけです。
まずはRuby 1.9.3の結果から。
$ time ruby test.rb (1回目) real 0m5.247s user 0m4.872s sys 0m0.292s (2回目) real 0m5.072s user 0m4.788s sys 0m0.248s (3回目) real 0m5.208s user 0m4.916s sys 0m0.252s
続いてRuby 2.0.0の結果です。
$ time ruby test.rb (1回目) real 0m2.253s user 0m1.976s sys 0m0.244s (2回目) real 0m2.209s user 0m1.936s sys 0m0.244s (3回目) real 0m2.214s user 0m1.976s sys 0m0.204s
「2.5倍高速」の売り文句は本当でした!
実際、手元のRailsプロジェクトでも
bundle exec rails runner "puts 1"
の結果が、9秒→3.5秒に高速化されました。
結論:Ruby 2.0を使いましょう。