Thema der Woche: Performant gedacht?

Diskutiere folgende Fragen:

Frage

richtig

falsch

Native Compiler können viel kompakteren Maschinencode erstellen.

   

n+n ist schneller als 2*n.

   

Anweisungen wie n/2, n/4, n*2 sollte man immer durch Verschieben nachbilden.

   

Für eine switch-Anweisung kennt der Compiler zwei unterschiedliche Umsetzungen in Bytecode.

   

Schleifen soll man immer runterzählen. Das ist viel schneller.

   

Über Weak-Reference verwaltet Objekte werden früher freigegeben, als über Soft-Reference verwaltete Objekte.

   

Synchronisierte Methoden sind nicht viel langsamer im Aufruf als nicht-synchronisierte Methoden.

   

Wenn man schnellen Zugriff auf ein Attribut haben muss, dann würde man auf die get()-Funktion verzichten und das Attribut zum Lesen freigeben. Das ist zwar kein Gutes Design, aber im Zugriff viel schneller.

   

Je tiefer die Vererbungshierarchie ist, desto langsamer ist eine Objekterzeugung.

   

Statische Eigenschaften sind im Zugriff immer viel schneller als Objekteigenschaften.

   

Wenn man intern eine Liste als Datenstruktur benutzt, man möchte diese aber sicher nach außen weitergeben (etwa durch getListe()), dann muss man die Liste immer kopieren.

   

Felder beliebiger Größe zu kopieren ist mit System.arraycopy() immer am schnellsten.

   

Ein String-Objekt aus einem StringBuffer zu erstellen kostet noch einmal Speicher für die gesamte Zeichenkette.

   

""+ganzzahl ist in nettes Idiom zur Konvertierung von Ganzzahlen in Strings, was auch in der Performance nicht schlecht ist.

   

intern() ist eine nützliche Funktion, die mehr Vorteile als Nachteile mit sich bringt.

   

charAt() von String ist schneller als charAt() von StringBuffer.

   

substring() erzeugt ein neues Zeichenfeld-Objekt, das genau den ausgeschnittenen Teil speichert.

   

Liest eine Schleife Zeilen aus einer Datei aus, so kann ein StringTokenizer gut benutzt werden, um die Zeilen zu untersuchen.

   

StringBuffer ist von der Performance ausgezeichnet.

   

Es spielt keine große Rolle, ob man einer HashMap eine Initialgröße gibt oder nicht.

   

Eine Menge von Wahrheitswerten sind in einem boolean-Array gut aufgehoben.

   

Ein BufferedOutputStream um einen beliebigen Stream bringt in jedem Fall einen Geschwindigkeitsvorteil.

   

Eine ArrayList kann viel kompakter serialisiert werden als eine LinkedList.

   

Mit java.nio kann man Dateien viel schneller kopieren als ohne.

   

Ein Server sollte eine Anfrage immer mit einem neuen Thread beantworten.

   

SELECT * FROM Tabelle ist unproblematisch.

   

Es ist egal, ob ich einen ResultSet mit getXXX(String Spaltenname) oder getXXX(int Spaltennummer) abfrage.

   

Für mehrere Anfragen an eine Datenbank ist immer ein PreparedStatement einzusetzen.

   

Eine JTable holt sich beim Scrollen jedes Element neu aus dem Model.

   

Wenn man SwingWorker durch FoxTrot ersetzt, gewinnt man noch einmal Geschwindigkeit bei Swing-Programmen.

   

Ein Obfuscator führt bei Applets zu einer Minimierung der Übertragungszeit.

   

Über Christian Ullenboom

Ich bin Christian Ullenboom und Autor der Bücher ›Java ist auch eine Insel. Einführung, Ausbildung, Praxis‹ und ›Java SE 8 Standard-Bibliothek. Das Handbuch für Java-Entwickler‹. Seit 1997 berate ich Unternehmen im Einsatz von Java. Sun ernannte mich 2005 zum ›Java-Champion‹.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.