1. ホーム
  2. ruby

[解決済み] Rubyでシングルクォートとダブルクォートを使い分けるとパフォーマンスが上がりますか?

2022-07-10 19:29:14

質問

Ruby 1.8 と 1.9 で、シングルクォートの代わりにダブルクォートを使用すると、パフォーマンスが低下するかどうかを知っていますか?

と入力すると

question = 'my question'

よりも速いのでしょうか?

question = "my question"

Rubyが二重引用符に出会ったとき、何かが評価される必要があるかどうかを見つけようとし、おそらくそのためにいくつかのサイクルを費やしていると想像しています。

どのように解決するのですか?

$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.0.0]

$ cat benchmark_quotes.rb
# As of Ruby 1.9 Benchmark must be required
require 'benchmark'

n = 1000000
Benchmark.bm(15) do |x|
  x.report("assign single") { n.times do; c = 'a string'; end}
  x.report("assign double") { n.times do; c = "a string"; end}
  x.report("concat single") { n.times do; 'a string ' + 'b string'; end}
  x.report("concat double") { n.times do; "a string " + "b string"; end}
end

$ ruby benchmark_quotes.rb 

                      user     system      total        real
assign single     0.110000   0.000000   0.110000 (  0.116867)
assign double     0.120000   0.000000   0.120000 (  0.116761)
concat single     0.280000   0.000000   0.280000 (  0.276964)
concat double     0.270000   0.000000   0.270000 (  0.278146)

注:新しいRubyのバージョンで動作するように更新し、ヘッダーをきれいにし、より高速なシステムでベンチマークを実行するようにしました。

この回答はいくつかの重要な点を欠いています。特に、次のような他の回答を参照してください。 補間 とその理由 性能に大きな差はない という理由です。