読者です 読者をやめる 読者になる 読者になる

WHITELEAF:Kindle応援サイト

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

:"symbol"

Ruby Rubyベンチ

気になったので他のパターンも。JRuby のための計測です。

require "benchmark"

def test_symbol(sym)
  a = sym
end

Benchmark.bm { |bm|
  bm.report("(1)") {
    10000000.times {
      test_symbol(:abc)
    }
  }
  bm.report("(2)") {
    10000000.times {
      test_symbol(:"abc")
    }
  }
  bm.report("(3)") {
    sym = :abc
    10000000.times {
      test_symbol(sym)
    }
  }
}
ruby 1.9.2dev (2010-04-27 trunk 27505) [i386-mingw32]
      user     system      total        real
(1)  1.750000   0.000000   1.750000 (  1.765625)
(2)  1.765000   0.000000   1.765000 (  1.781250)
(3)  1.688000   0.000000   1.688000 (  1.703125)
jruby 1.5.1 (ruby 1.8.7 patchlevel 249) (2010-06-06 f3a3480) (Java HotSpot(TM)
Client VM 1.6.0_20) [x86-java]
      user     system      total        real
(1)  1.688000   0.000000   1.688000 (  1.672000)
(2)  8.172000   0.000000   8.172000 (  8.172000)
(3)  1.718000   0.000000   1.718000 (  1.718000)
ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mswin32]
      user     system      total        real
(1)  4.406000   0.000000   4.406000 (  4.531250)
(2)  4.563000   0.000000   4.563000 (  4.578125)
(3)  4.671000   0.000000   4.671000 (  4.703125)

遅くなるのは JRuby で " " で囲った場合だけのようですね。

*追記*
修正されたそうで、JRuby 1.6.0 に入るそうです。