Lokale Variablen oder Klassen-Felder?

Las ich heute einen Beitrag über die performance-Verbesserung in C# und Java.

Ich immer noch nicht auf dieses:


19. Verwenden Sie nicht zu viele Instanz-Variablen

Leistung kann verbessert werden, durch die Verwendung von lokalen Variablen. Der code in Beispiel 1 wird schneller ausgeführt als code im Beispiel 2.

Beispiel1:

public void loop() {
    int j = 0;
    for ( int i = 0; i<250000;i++){
        j = j + 1;
    }
}

Beispiel 2:

int i;
public void loop() {
    int j = 0;
    for (i = 0; i<250000;i++){
        j = j + 1;
    }
}

In der Tat, ich verstehe nicht, warum es schneller sein soll zu instanziieren, einige Speicher, und geben Sie es jedes mal, wenn ein Aufruf der loop Funktion ist fertig, wenn ich könnte einen einfachen Zugriff auf ein Feld.

Es ist Reine Neugier, ich bin nicht versucht, die variable 'i' in der Klasse' scope :p
Das ist wahr, das ist schneller auf der Verwendung von lokalen Variablen? Oder vielleicht auch nur in manchen Fällen?

  • Ich denke, der performance-Unterschied sollte vernachlässigbar sein, Sie sollten mehr besorgt über die Entwickler die performance in den code zu verstehen. Wenn Sie ein Feld oder eine Eigenschaft, die sollte sein eine lokale variable, ich würde Sie Konflikte werden in das Verständnis der Zweck. Wenn Sie wissen wollen, den Unterschied in der Leistung, warum nicht benchmark (oder Lesen Sie die IL, die beide erzeugen)?
  • Der Zugriff auf die variable aus dem stack ist wahrscheinlich schneller als der Zugriff auf Sie durch einen heap-Verweis.
  • So viel schlechte Beratung in diesem Artikel, weiß ich nicht, wo Sie anfangen
  • eine Antwort könnte ein guter Ort sein.
  • Artikel 1, 3, 4, 5, 7, 16, 17, 18, 20 aus dem Artikel sind alle schlecht beraten. Vieles davon ist die veraltete Java-performance folklore. Der Autor nicht selbst stilisieren Java korrekt (es ist Java und nicht JAVA).
  • "Tipps und tricks für performance-Listen" sind im Allgemeinen schlimmer als wertlos: Sie sind aktiv schädlich, weil Sie ermutigen, ein schlechter Ansatz, um die Leistung. Die Leistung muss angesprochen werden, wie eine engineering-Disziplin, die verwendet sorgfältig ausgewählte Metriken, kundenorientierte Ziele, empirische Messungen und gezielte Korrekturen. Tipps und tricks Listen fördern, Mikro-Optimierungen, die nicht eigentlich jeder profitieren und in vielen Fällen machen die Leistung schlechter.

InformationsquelleAutor dotixx | 2013-07-17
Schreibe einen Kommentar