Es gibt in PHP verschiedene Möglichkeiten Schleifen zu nutzen. Darunter bestimmten Programmcode mehrmals hintereinander in einer Schleife durchlaufen zu lassen. Die verschiedenen Formen die im weiteren Leistungstechnisch untersucht werden sind:
- for
- while
- do-while
Performance – Ablauf
[one_half]Schleifendurchlauf
Die einzelnen Schleifen durchlaufen jeweils einen Durchlauf mit 10 Durchgänge (=n*10) um eventuelle Schwankungen auszugleichen.[/one_half]
[one_half_last]Auswertung
Die in den Reports angegeben Tabellen zeigen die SUM, Prozentuale Abweichung vom MIN()-Wert sowie die einzelnen MIN&MAX, AVG σ (Standardabweichung). Sollte es also größere Ausreißer geben würde die σ dies aufzweigen.[/one_half_last]
Fragestellung und Fazit
Durch den Testlauf soll erkannt werden welche Schleifen in großer Anzahl am performantesten (schnellsten) sind.
Performance-Check mit meheren Durchgängen
Hierbei wurden verschiedene Durchläufe (n) mit wie bereits oben genannt jeweils 10 Durchgängen (n*10) gemacht:
- 100,000
- 1,000,000 (1. Mio)
- 10,000,000 (10 Mio.)
- 100,000,000 (100 Mio.)
- 1,000,000,000 (1 Mrd.)
Testergebnisse
Fazit – PHP Schleifen Performance
Das Ergebnis ist bei größerer Anzahl der Durchgänge eindeutig. while() etwas schneller zu sein. Dicht darauf folgt die do-while() Schleife. Die for() Schleife liegt zwischen 6%-17% Sekunden hinter der while() Schleife.
Letztendlich wird man den Unterschied aber nur in großen Projekten überhaupt merken. Davon ab das in der Praxis solch lange Ergebnisse oder Daten auf mehreren Seiten gesplittet werden.
[one_third] [dropcap]1.[/dropcap] while()[/one_third]
[one_third] [dropcap]2.[/dropcap] do-while()[/one_third]
[one_third_last] [dropcap]3.[/dropcap] for()[/one_third_last]
Tabelle
| method / n | 100,000 | 1,000,000 (1 Mio.) | 10,000,000 (10 Mio.) | 100,000,000 (100 Mio.) | 1,000,000,000 (1 Mrd.) |
|---|---|---|---|---|---|
| Link (ausführlicher Report) | Report | Report | Report | Report | Report |
| for | +17.38% (0.09150) | +6.08% (0.90076)/ | +7.59% (8.92419) | +9.17% (91.89620) | +7.70% (909.71143) |
| while | 0.00% (0.07795) | 0.00% (0.84910) | 0.00% (8.29461) | 0.00% (84.17563) | 0.00% (844.64212) |
| do-while | +11.33% (0.08678) | +2.48% (0.87013) | +3.24% (8.56374) | +5.14% (88.50699) | +1,96% (861.18477) |
Der Artikel PHP Performance – Schleifen, welche sind schneller? erschien zuerst auf codeJuice.