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