:"symbol"
気になったので他のパターンも。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 に入るそうです。