PrintWriter out = response.getWriter(); Optimierungsmöglichkeiten?

Herr_M

Erfahrenes Mitglied
Hallo Zusammen,

Mit einigen Kollegen zusammen arbeite ich seit geraumer Zeit an einer Webanwendung. Mir wurde jetzt die Aufgabe zu Teil die Geschwindigkeit zu optimieren, dabei ist mir aufgelfallen
das einer meiner Kollegen sehr häufig mit

PrintWriter out = response.getWriter();

gearbeitet hat und dabei viele derartige Konstrukte auftauchen:

Java:
response.setContentType("text/xml");
			PrintWriter out = response.getWriter();

			out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			out.println("<login>");
			out.println("  <user_name>");
			out.println("    <korrekt>" + xml_name + "</korrekt>");
			out.println("    <message>" + xml_name_msg + "</message>");
			out.println("  </user_name>");
			out.println("  <user_passwort>");
			out.println("    <korrekt>" + xml_passwort + "</korrekt>");
			out.println("    <message>" + xml_passwort_msg + "</message>");
			out.println("  </user_passwort>");
			out.println("  <forward>");
			out.println("    <pageurl>" + xml_forward + "</pageurl>");
			out.println("    <refresh>" + xml_refresh + "</refresh>");
			out.println("  </forward>");
			out.println("</login >");
			out.flush();
			out.close();

Mein Bauchgefühl sagt mir, das hier viel Potential für Geschwindigkeitsoptimierung steckt, das mit das soch sehr an sowas wie

Java:
String test = "Hallo " + variable + ", sooooo viel Text " + nochnevariable + "bla bla";

was sich ja mit StringBuffer optimieren lässt.

Gibts für out.println und so viele Zeilen eventuell auch etwas effizienteres um hier noch Performance rauszukitzeln?
 
Also wenn es meine Aufgabe wäre eine Webanwendung zu beschleunigen, wäre das letzte was mir in den Sinn käme der Quelltext selbst. Da gibt es tausende Baustellen, welche wichtiger sind. Aber dazu komme ich gleich.

Das String-Operationen, insbesondere Konkatenation, "langsam" sind ist erstmal richtig.
Aber
1. Es handelt sich nicht um String-Konkatenationen sondern du schreibst in den Buffer eines Streams (Also StringBuffer/StringBuilder überflüssig)
2. Es sind nur 15 Strings die ausgegeben werden. Selbst wenn du diese Zeichen für Zeichen konkatenieren würdest, bewegen wir uns im Bereich von Nanosekunden.


Jetzt zu meinem Eingangssatz. Wenn du den Code optimieren willst, such lieber nach langsamen Datenbankabfragen oder nach so exotischen Sachen wie der Erzeugung eines EntityManager Objektes.
Die eigentlich Performance steckt in Sachen wie:

-Zu viele HTTP-Anfragen (CSS und JS Dateien zusammenführen und Grafiken in Sprites stecken)
-Zu große Dateien (CSS, HTML und JS Verkleinern/Minify und Grafiken im passenden Format speichern.)
-Statische Dateien auf eine Domain/Subdomain ohne Cookies legen
-JavaScript Dateien erst am Fuß der Seite einfügen und CSS am Anfang
-HTTP Caching aktivieren
-GZIP einschalten

Für alles was ich jetzt nicht aufgezählt hab: http://developer.yahoo.com/performance/rules.html

Edit: Fast vergessen
http://developer.yahoo.com/yslow/
http://code.google.com/speed/page-speed/
 
Zuletzt bearbeitet:
Danke für die Tipps,

Natürlich hast du recht, dass neben dem Quellcode auch ganz andere Stellen Optimierungspotential bergen und meisten auch viel höheres. Einige der Tipps die du vorgeschlagen hast und die bei Yahoo nachzulesen sind waren mir schon bekannt, andere wieder nicht oder nicht wie stark die sich auswirken können.

Mir war halt beim durchsehen des Quellcodes nach Datebankabfragen etc aufgefallen das der PrintWriter ziemlich häufig verwendet wird und da hat sich mir zwangsläufig die Frage gestellt ob
es hier Optimierungspotential gibt.
 
Zurück