Performancefrage in Bezug auf for(:)

takidoso

Erfahrenes Mitglied
Hallo und Halli,
ich frage mich gerade, ob es egal ist, oder ob das eine performancetechnisch flinker ist als das andere, da mir nicht ganz klar ist wie das Java intern auflöst...
Java:
Set<Map.Entry<String,Integer>> entrySet = aMap.entrySet();
for (Map.Entry<String, Integer> anEntry : entrySet)
{
  ....        		
}
oder ist die Auflösung des Folgenden
Java:
for (Map.Entry<String, Integer> anEntry : aMap.entrySet())
{
  ....        		
}
Identisch mit dem dadrüber?

Mit neugierigen Grüßen

Takidoso
 
Ich koche mal ein wenig alte Fragen auf^^

Ich würde behaupten, dass die 1. Version ein Tick schneller ist. Da die Methode .entrySet() nicht jeden Durchlauf aufgerufen wird.

Prinzipiell gilt: Was du außerhalb einer Schleife machen kannst bringt Performance. Ob der Performance Gewinn eine große Relevanz hat ist eine andere Frage.

Und man weiß auch nicht, wie viel der Compiler macht (da hilft nur decompilen).
 
Hi,

Für die Performance ist das marginal.
Was Du tust, ist das EntrySet in eine extra Variable zu speichern.

Die C Leute kennen das als 'call by reference' d.h. die Variable zeigt direkt
auf das Objekt (Adresse) und speichert nicht dessen Wert o.ä.;

Syntaktisch kann das Code durchaus lesbarer machen.

Gruß Tim
 

Neue Beiträge

Zurück