1. Der Zweck unseres Tuns:
1. Effizienz (am wichtigsten)
2. Lesbarkeit, in der späteren Phase leicht zu warten. (Auch wichtig)
2. Anforderungen für die Codeoptimierung:
1. Reduzieren Sie das Volumen des Codes.
2. Verbessern Sie die laufende Effizienz des Codes.
3. Optimierung des häufig verwendeten Codes:
1. Versuchen Sie, Objekte wiederzuverwenden:
Insbesondere die Wiederverwendung von Stringobjekten. Das am häufigsten verwendete String -Spleißen:
Bei der Begegnung mit häufiger Wischung der String. Denken Sie daran, StringBuilder/StringBuffer zu verwenden
Zum Beispiel:
ArrayList <String> Liste; StringBuilder Builder = new StringBuilder ();
Grund: Java Virtuelle Maschinen müssen nicht nur Zeit damit verbringen, Objekte zu generieren, sondern auch Zeitverarbeitung und Recycling -Objekte zu verbringen.
2. Verwenden Sie nach Möglichkeit lokale Variablen:
Lokale Variablen werden im Stapel erstellt und schnell erstellt und verschwinden automatisch nach dem Gebrauch ohne zusätzliche Müllsammlung.
Statische Variablen, Instanzvariablen usw. werden im Haufen erstellt, und die Erstellungsgeschwindigkeit ist langsam und stützt sich auch auf den Mechanismus der Java -Müllabfuhr.
3. Schließen Sie den Fluss in der Zeit:
In der Java -Programmentwicklung müssen Sie nach Abschluss der E/A- und Datenbankvorgänge daran denken, den Fluss zu schließen.
Ursache: Das Nicht schließen des Flusses kann dem System einen großen Aufwand verursachen und können sogar schwerwiegende Folgen für die Daten haben.
4. Verwenden Sie faules Laden
Lazy Loading: Erstellen Sie dieses Objekt nur, wenn es verwendet werden soll.
Zum Beispiel:
String prefix = "Gebi";
Ersetzen durch:
if ("laowang" .equals (name)) {String prefix = "gebi";5. Vermeiden Sie es mit Versuchen zu verwenden ... Fang in Schleifen, verwenden Sie Try ... Fang außerhalb der Schleife
6.try ... fangen sollte nicht zu groß sein.
Setzen Sie nicht den gesamten nutzlosen Code ein, dh die Ausnahme wird nicht in den Versuch geworfen ... Catch Block und reduzieren Sie die Größe des Versuchs ... Catch Code Block.
Stellen Sie die Lesbarkeit, Wartung und Robustheit des Codes sicher.
7. Versuchen Sie zu vermeiden, Referenzen auf Objekte innerhalb der Schleife zu erstellen.
Besonders wenn das Zirkulationsvolumen groß ist.
while (i <1000) {Object Object = New Object ();Es wird empfohlen, es zu ändern an:
Object Object = null;
Jedes Mal, wenn New Object () neu ist, verweist das Objekt -Objektverweis auf das Objektobjekt.
Wenn beispielsweise viele Schleifen der erste Typ vorhanden sind, erstellt der JVM 1.000 Verweise auf Objekte, während der zweite Typ nur eine Objektobjektreferenz im Speicher hat. Dies spart stark Speicherplatz.
8. Verwenden Sie keine statischen Variablen nach Belieben.
Wenn auf ein Objekt durch eine statische Variable verwiesen wird, säubert der Java -Müllsammler den vom Objekt besetzten Heap -Speicher nicht.
Der Heap -Speicher, der durch die statische Variable besetzt ist, wird erst dann veröffentlicht, wenn das Programm, in dem sich die Variable befindet,. Das heißt, statischer variabler Lebenszyklus = Klassenlebenszyklus.
9. Erstellen Sie nicht einige nicht verwendete Objekte und importieren Sie einige nicht verwendete Klassen nicht.
10. Verwenden Sie gepufferte E/A -Streams:
Gepufferte E/A -Ströme können die Effizienz der I/A erheblich verbessern. BufferedWriter, BufferedReader, BufferedInputStream, BufferedOutputStream.
11. Umwickelnde Daten in Saiten umwandeln: TOString
Ganzzahl i = 1;
Umwickeln Sie die Verpackungsdaten in String -Methodengeschwindigkeitsranking:
I.ToString> String.Valueof (i)> "" + i
12. MAP -Traversal -Effizienz: Einstiegset> Schlüsselet
// Eintragset () für (Eintrag <String, String> Eintrag: Map.EntrySet ()) {String Key = Eintrag.getKey (); : " + value);} // vergleiche nach oben und unten // keyset () für (String -Schlüssel: map.keyset ()) {String value = map.get.get (Schlüssel); System.out.println (Key +": " + Wert);}13. Über die Sammlung durchdrungen von Iterator und foreach ().
In der Einführung in den Algorithmus heißt es: Algorithmen sollen die Raumeffizienz und die Zeiteffizienz verbessern. Aber oft können Zeit und Raum nicht koexistieren.
Zeiteffizienz: Iterator> foreach ()
Code -Lesbarkeit: foreach ()> Iterator
// iterator set <Eintrag <String, String >> Eintragset = map.EntrySet (); String> Eintrag = iter.Next ();
Kontrast:
// foreach () für (Eintrag <String, String> Eintrag: Map.EntrySet ()) {String key = Eintrag.getKey (); : " + Wert);}Persönlich glaube ich, dass es empfohlen wird, Iterator zu verwenden, um die Sammlung bei der Verarbeitung von Big Data zu durchqueren.
Für kleine Datenverarbeitung wird foreach () jedoch weiterhin für die Lesbarkeit und spätere Wartung verwendet.
Beide sollten bei der Verwendung in Kombination gemeistert werden.