[Ruby-de-talk] Performance-Frage - String zusammenbasteln

Stephan Kämper Stephan.Kaemper at Schleswig-Holstein.de
Sun Aug 1 15:30:18 EDT 2004


Dirk Einecke wrote:

 > Hi.
 >
 > Michael Neumann wrote:
 >
 >> Dirk Einecke wrote:
 >>
 >>> 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.
 >
 >
 >
 > Was sind denn bei dir kurze Strings? Also bis zu wieviel "Komonenten" 
die zusammengesetzt werden sollen? Kann an das so allgemein sagen?
 >
 > Bisher hatte ich sowas:
 >   path = p.directory + p.filename + '.rb'
 >
 > Würde nun
 >   path = "#{p.directory}#{p.filename}.rb"
 > oder
 >   path = p.directory << p.filename << '.rb'
 > besser sein?
 >


String.<< hängt das Argument an den gegebenen String an und verändert 
den Empfänger der Nachricht.
String.+ dagegen läßt den Empfänger der Methode unverändert und liefert 
einen nagelneuen String. Das kostet natürlich ein wenig (Zeit und Speicher).

irb(main):001:0> a = 'a'
=> "a"
irb(main):002:0> a << 'b'
=> "ab"
irb(main):003:0> a
=> "ab"
irb(main):004:0> a + 'c'
=> "abc"
irb(main):005:0> a
=> "ab"
irb(main):006:0>

Hoffe das half. ;-)

Stephan

PS.: Sorry ich hatte das zunächst nur an Dirk gemailt, jetzt gehts auch 
an die Mailingliste...
-- 
Stephan Kämper/IT-Beratung
Softwarequalitätssicherung, Softwaretest, Datenanalyse

Wulfsdorfer Weg 10
22926 Ahrensburg

Tel.: 04102 / 978 984




More information about the Ruby-de-talk mailing list