Feedback

what's your question? be descriptive.

By: [ Moderator ] Asked from Bogotá, Colombia

¿Es más eficiente usar comillas sencillas que comillas dobles?

¿Podrían compartir algún benchmark que lo demuestre?

Add comment viewed 91 times Latest activity 7 months ago

or Cancel

2 answers

  • 0

mongrelion [ Moderator ] from Barranquilla, Colombia

Este es el código y el resultado para la prueba hecha en jruby 1.6.4 (ruby-1.9.2-p136) (2011-08-23 17ea768) (Java HotSpot™ 64-Bit Server VM 1.6.026) [darwin-x8664-java]


n = 10_000_000
Benchmark.bm 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
      user     system      total        real
assign single  0.871000   0.000000   0.871000 (  0.872000)
assign double  0.542000   0.000000   0.542000 (  0.543000)
concat single  1.459000   0.000000   1.459000 (  1.459000)
concat double  1.325000   0.000000   1.325000 (  1.325000)

El script fue tomado como referencia de esta url http://goo.gl/mei2Z

or Cancel
  • 0

danpal from Colombia

No hay diferencia. Y no se puede hacer una prueba solo haciendo assigments…….lo peor es que hay “programadores” que se creen estas cosas…asi segun la primer respuesta, double “ es mas rapido, aqui va la prueba de que singles es mas rapido para imprimir…waste of time…

<pre><code>
require ‘benchmark’

n = 1000000
Benchmark.bm do |x|
  x.report("print single”) { n.times do; \$stderr.puts ‘a string’; end}
  x.report(“print double”) { n.times do; \$stderr.puts “a string”; end}
  x.report(“print single”) { n.times do; \$stderr.puts ‘a string ’ + ‘b string’; end}
  x.report(“print double”) { n.times do; $stderr.puts "a string " + "b string"; end}
      user     system      total        real
print single  1.810000   1.540000   3.350000 (  3.346301)
print double  1.820000   1.560000   3.380000 (  3.379489)
print single  2.100000   1.580000   3.680000 (  3.672543)
print double  2.100000   1.590000   3.690000 (  3.689054)

</code></pre>
or Cancel