Schleifen Performance
Heidi
- programmiertechnik
Hallo Profis.
Bei der ersten Schleife wird die Anzahl der Durchläufe in einer Variablen abgespeichert, bei der zweiten immer direkt abgefragt.
$laenge = count($parameterIDs);
for ($i = 0; $i < $laenge; $i++) {...}
for ($i = 0; $i < count($parameterIDs); $i++) {...}
Mit Testdaten wurden die Schleifen ca. 13.000 mal durchlaufen. Bei dieser Anzahl ist die erste Schleife bedeutend schneller.
Das hängt natürlich daran, dass bei der zweiten 13.000 mal die Anzahl (13.000) erfragt werden muss.
Bei ca. 20 Durchläufen ist die zweite etwas schneller.
Das liegt daran, dass die Speicherung in die Variable länger dauert als das Abfragen der Länge.
Nun meine Frage: Gibt es eine Faustregel ab wann man die Nummer eins und ab wann die Nummer zwei einsetzt?
Grüße aus München,
Heide
hi,
Nun meine Frage: Gibt es eine Faustregel ab wann man die Nummer eins und ab wann die Nummer zwei einsetzt?
Meine Faustregel: Immer die erste.
Auf das bisschen, was die Zuweisung des Variablenwertes evtl. "kosten" mag, kann i.a.R. verzichtet werden.
gruß,
wahsaga
Hallo wahsaga,
vielen Dank.
Heidi
hallo,
wie wärs mit einer 3. Variante?
3)
for ($i = count($parameterIDs)-1; $i >= 0 ; $i--) {...}
Gruss planB
Hallo planB,
ist das nicht mit Version identisch (zumindest die Performance)?
Heidi
Hello,
ist das nicht mit Version identisch (zumindest die Performance)?
nö, denn:
MfG
Rouven
Hallo Heide,
Du solltest immer die erste Variante einsetzen!
Etwas wie count() häufig aufzurufen kostet im Durchschnitt viel mehr Zeit als den Wert vorher einmal in einer Variablen abzulegen. count() o.ä. kann wg. der Speicherabfragen bei großen Arrays oder Hashes ziemlich bremsen.
Gruß