在RUBY中使用单引号与双引号会有性能提升吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

如果我输入

question = 'my question'

比它快吗?

question = "my question"

提问于
用户回答回答于
$ 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的工作方式缺乏了解。在这两种情况下,字符串将被解析为tSTRING_CONTENT。换句话说,在创建'string'"string"。完全相同的位数会以完全相同的方式翻转。

注意,如果存在表格的插值"...#{...}...",这将被解析为tSTRING_DBEG,一堆tSTRING_DVAR中的每个表达式#{...}还有tSTRING_DEND...。但是,只有在有插值的情况下

我建议你在任何地方都使用双引号(这样就可以更容易地添加双引号)。#{some_var}),但是现在我使用单引号,除非我需要插值,\n等等..。我喜欢它的视觉效果,而且它稍微显式一些,因为不需要解析字符串来查看它是否包含任何表达式。

扫码关注云+社区