Iteration performance – Vergleich

Es gibt viele Möglichkeiten eine Ansammlung von Daten mithilfe einer Iteration zu durchlaufen.
Die verwendete Iteration hängt meistens von der Sachlage ab.

  • Wird ein Index benötigt.
  • Auf wie viel Objektvariablen wird zugegriffen.
  • Muss das Objekt noch convertiert oder gecastet werden.

Jedoch welche Iterationsmethode ist die performanteste? Welcher Durchlauf ist am schnellsten?
Zur Auswahl steht

  1. ForEach
  2. For
  3. While
  4. Linq

Testeigenschaft

Es handelt sich um ein Array einer Simplen Klasse, welche lediglich einen Bool und einen Integer als Objektvariablen besitzt. Jeder Test wurde 10 mal durchgeführt und die Ergebnisse bilden sich aus dem Durchschnitt. Die Zeitangabe befindet sich in Millisekunden.

Testfall 1.

In diesem Testfall wird nur die Anzahl der Elemente durchwandert, ohne eine sonstige Änderung oder Operation vorzunehmen.

Anzahl der Objekte ForEach For While Linq
1 0 0 0 0
10 0 0 0 0
100 0 0 0 0
100000 0 0 0 0
1000000 2 2 2 6
10000000 26 26 25 119
20000000 54 54 51 163

 

Testfall 2.

In der einfachen Klasse wird beim Initialisieren der Bool zufällig gesetzt.
Nun wird der Integer in der Klasse um eines erhöht, sollte der boolsche Wert “true” sein.

Anzahl der Objekte ForEach For While Linq
1 0 0 0 0
10 0 0 0 0
100 0 0 0 0
100000 1 1 1 2
1000000 11 11 10 25
10000000 112 112 106 274
20000000 226 226 212 545

 

In beiden Testfällen ist die “While” Iteration am schnellsten. Die Testergebnisse basieren natürlich auf meiner Hardware. Der Quellcode für die Datenermittlung steht hier zum download bereit.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.