1. Eliminieren Sie in wichtigen Schleifen Methodenaufrufe, wenn Sie die Beendigung der Schleife beurteilen.
Kopieren Sie den Codecode wie folgt:
for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}
Ersetzen durch…
Kopieren Sie den Codecode wie folgt:
Klartext in Zwischenablage anzeigen und drucken?
for(int i=0;n=collection.size();i<n;i++)
{
...
}
2. Normalerweise werden Elemente, die nicht mit dem Schleifenindex in Zusammenhang stehen, außerhalb der Schleife verschoben.
Kopieren Sie den Codecode wie folgt:
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/scaleA*scaleB;
}
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/scaleA*scaleB;
}
Wechseln zu
Kopieren Sie den Codecode wie folgt:
Doppelskala = SkalaB/SkalaA;
for(int i=0; terminal=x.length; i<terminal; i++){
X[i]=x[i]*scale;
}
2. Zeichenfolge
Beseitigen Sie die Zeichenfolgenverkettung. Verwenden Sie beim Erstellen langer Zeichenfolgen immer StringBuffter anstelle von String
StringBuffer-Speicherplatz vorab zuweisen
StringBuffer sb = new StringBuffer(5000);
3. Grundlegende Datentypen
Verwenden Sie grundlegende Datentypen in wichtigen Schleifen (int-Datentypen sind normalerweise schneller als lange/doppelte Datentypen).
Wrapper-Klassen grundlegender Datentypen (Boolescher Wert, Ganzzahl usw.) werden hauptsächlich verwendet, wenn der übergebene Methodenparameter eine Referenz auf ein Objekt sein muss (und nicht auf einen grundlegenden Datentyp).
Verwenden Sie den statischen Endmodifikator für alle konstanten algebraischen Ausdrücke
Man erleichtert die Referenzierung von Konstanten (der Compiler berechnet konstante Ausdrücke vorab).
4. Abnormalität
Ausnahmen werden nur für eine einzelne wahre Fehlerbedingung verwendet
Das Auslösen einer Ausnahme und das Ausführen eines Catch-Blocks ist teuer (hauptsächlich aufgrund der Erstellung eines Snapshots des Thread-Stacks beim Erstellen einer Ausnahme).
Eine Ausnahme wird nur ausgelöst, wenn die Bedingung wirklich abnormal ist
Nehmen Sie Compiler- und Laufzeitoptimierungen vor, indem Sie mehrere Methodenaufrufe in einem Try/Catch-Block platzieren, anstatt mehrere Try/Catch-Blöcke für jeden Methodenaufruf zu implementieren
5.Benchmark
Beachten Sie, dass alle diese Tipps je nach Plattform und virtueller Maschine unterschiedlich sind
Beispiel: In einigen Servlet-Containern ist es schneller, Bytes über einen OutputStream auszugeben – in anderen Containern ist es schneller, Zeichen über einen PrintWriter auszugeben
Diese Tipps beschreiben die tragbarsten Empfehlungen
Möglicherweise müssen Sie einige Benchmarks durchführen, um festzustellen, was auf Ihrer Plattform am schnellsten ist