Biesterfeld: Internetseite einlesen und wieder ausgeben

Beitrag lesen

Hej,

Nur ein kurzer Hinweis:

  

>     String ergebnis ="";  
>     while((tmp = br.readLine()) != null)  
>     {  
>      ergebnis = ergebnis.concat(tmp);  
>     }  

Da String immutable ist, kann das so sehr unperformant werden. Für jedes concat() -- also jeden Schleifedurchlauf -- muss die JVM erstmal neuen Speicher für eine CharacterSequence allozieren, dann den alten String hineinkopieren, den anzuhängenden dranhängen, das so erzeugte Objekt in die neue Variable einhängen, und irgendwann den alten Speicherbereich durch den GC aufräumen. Zugegeben, in der Praxis spielt das oft keine Rolle, aber aus Prinzip und auch Komfortgründen würde ich schon zum Gebrauch des [link:http://java.sun.com/javase/6/docs/api/java/lang/StringBuilder.html@title=StringBuilder]s, oder wenns synchronized sein muss des [link:http://java.sun.com/javase/6/docs/api/java/lang/StringBuffer.html@title=StringBuffer]s raten.

Siehe auch das Handbuch der Java-Programierung, Kapitel 49.2, Tuning Tips.

Beste Grüße
Biesterfeld

--
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz