hakeの日記

Windows環境でプログラミングの勉強をしています。

rubyの実行速度

なんかruby1.9は速くなったといわれてるんでザウルスで試してみました。使用したのはruby1.8.6-p111とruby1.9.0です。

使用したスクリプトは以下です。

a = 0
1000.times do
  (1..10000).each do |i|
    a += 1
  end
end
puts a

結果は

$time ruby test.rb
10000000
 
real    1m25.387s
user    1m10.640s
sys     0m13.430s

$time ruby19 test.rb
10000000
 
real    0m48.414s
user    0m29.690s
sys     0m17.980s

さすが1.9はやっ!
ところが、こちらのスクリプトだと

a = 0
100.times do
  (1..10000).each do |i|
    a += 1 if /a.*a/ =~ "abcdefga"
  end
end
puts a

結果は

$time ruby test.rb
1000000
 
real    1m15.758s
user    1m9.040s
sys     0m5.820s

$time ruby19 test.rb
1000000
 
real    1m28.239s
user    1m19.810s
sys     0m7.340s

遅くなってるしorz
正規表現を使うと遅くなるのでしょうかね。