in Java Der hashmap-Implementierungsschlüssel wird zuerst dem Objekt zugewiesen und dann verglichen

9

Die Java-Implementierung von hashmap ist nicht in der Lage, den Grund für einige Zeilen zu verstehen. Im folgenden Code kopiert von hier , in der Zeile 365-367, kann ich nicht verstehen, warum sie zuerst die Zuordnung von e.key zu k gemacht haben und dann == mit key [(k = e.key) == Taste]. Warum nicht direkt (e.key == key). Dieses Muster erscheint mehrmals im Code.

%Vor%     
Nitiraj 27.04.2015, 06:56
quelle

2 Antworten

0

Ich denke @ marco13 hat die richtigen Links gepostet, die diese Frage beantworten. Einfach die Links erneut posten. Warum wird die Sperre für eine lokale Variable erfasst

?

In ArrayBlockingQueue, warum das letzte Mitglied kopieren Feld in lokale endgültige Variable?

Warum jdk code style eine Variablenzuweisung verwendet und in derselben Zeile liest - z. (i = 2) & lt; max

Antwort: Die Verwendung der Funktion local reference der Elementvariablen verringert die Größe des generierten Bytecodes.

    
Nitiraj 07.05.2015, 09:39
quelle
2

Dies ist wahrscheinlich eine Frage der Optimierung. Der Aufruf von e.key fügt eine indirekte Ebene hinzu (wenn Sie den Verweis auf e verwenden, um einen Verweis auf key zu erhalten). Die Variable k ermöglicht eine Verknüpfung für e.key und vermeidet die doppelte Verwendung dieser unnötigen Indirektion. Die Implementierung verwendet auch direkt das Ergebnis der Zuweisung k = e.key , anstatt den Wert k zuzuweisen und dann k mit key zu vergleichen.

Ich weiß nicht, ob die Auswirkung einer solchen Optimierung signifikant ist (Zuweisung einer neuen Variablen gegenüber einem indirekten Zugriff). Es ist wahrscheinlich schwierig, sie zu bewerten, und sie kann von der JVM abhängig sein (da unterschiedliche JVM verschiedene Optimierungen am Code durchführen können).

Da HashMap in Java weit verbreitet ist, soll die Implementierung maximale Leistung bieten, ohne dass eine Optimierung von der Ausführungsumgebung erwartet wird; daher die gemeinsame Verwendung dieses Musters.

    
archz 27.04.2015 11:49
quelle

Tags und Links