你知道在ruby 1.8和1.9中使用双引号而不是单引号是否会以任何有意义的方式降低性能吗.
所以如果我打字
question = 'my question'
它比我快吗
question = "my question"
我想象ruby在遇到双引号时,会试图找出是否需要对某个东西进行判断,并且可能会花费一些周期来做这件事.
你知道在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版本,并清理了标题,并在更快的系统上运行了基准测试.
这个答案忽略了一些关键点.当使用单引号和双引号时,请特别查看关于interpolation和原因there is no significant difference in performance的其他答案.