Re: Performance-Frage - String zusammenbasteln

Michael Neumann <[email protected]> Sun, 01 Aug 2004 20:49:27 +0200
Newsgroups gmane.comp.lang.ruby.german
Message-ID <[email protected]>
Dirk Einecke wrote:
> Hi.
> 
> Ich habe ein Programm, bei dem ich haufenweise Strings zusammenbastle. 
> Nun gibt es dafür ja zwei Möglichkeiten:
> 
> 1.
> newPath = ENV['DOCUMENT_ROOT'] + 'foo/bar/' + path
> 
> 2.
> newPath = "#{ENV['DOCUMENT_ROOT']}foo/bar/#{path}"

Also generell würde ich bei längeren strings << bevorzugen. #{} scheint 
aber zumindest für kurze strings schneller zu sein.

Hier ein kleiner Benchmark:

   require 'benchmark'

   N = 2_000_000

   Benchmark.bm do |x|
     a = "blah 123 123 123".freeze
     x.report("\#{}") { N.times { "#{ a }#{ a }#{ a }#{ a }#{ a }" } }
     x.report("+") { N.times { a + a + a + a + a } }
     x.report("<<") { N.times { (s = "") << a << a << a << a << a } }
   end


Grüsse,

   Michael