Der Umgang sowie die Umsetzung von mathematischen Funktionen in PHP ist einfach gehalten und lässt sich auf verschiedene Weiße schnell realisieren. Im folgenden werden also verschiedene Iterationsmethoden vorgestellt und auf ihre Performance untersucht.
Die folgenden Iterationsmöglichkeiten wurden dabei geprüft:
- Berechnungen ($n+1)
- Post-Inkrement ($n++)
- Pre-Inkrement (++$n)
Performance – Ablauf
Schleifendurchlauf
Die einzelnen Testläufe werden per while-Schleife durchgeführt mit jeweils zehn (10) Durchgängen (=n*10) um eventuelle Schwankungen auszugleichen.
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.
Fragestellung und Fazit
Durch den Testlauf soll erkannt werden ob die Berechnung oder die Inkrementierung (Post/Pre) in großer Anzahl am performantesten (schnellsten) sind.
Performance-Check mit mehren 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
PHP Performance – Iteration
Das Resultat zeigt deutlich auf das die Iterationsvariante Inkrementierung (Post/Pre) generell schneller ist. Die oft genutzt Berechnungsmethode ($n+1) ist wesentlich länger (zwischen 10%-20%). Die performancestärkste Variante der Iteration ist die Pre-Iteration welche zwischen 17%-20% schneller ist als die Berechnungsmethode.
Testergebnisse
1. Pre-Inkrement
Schnellste Variante, Wert wird aber vor (!) dem Ausgeben erhöht.[/one_third]
2. Post-Inkrement
10%-14%(/20% Ausreißer) langsamer – aber am meisten verbreitet.[/one_third]
3. Berechnung
17%-20% langsamer als die Pre-Inkrement Methode. Nicht zu empfehlen bei vielen Datensätzen.
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 |
| Calculation | +20.75% (0.10073) | +18.23% (0.95118) | +17.28% (10.059) | +18.37% (96.989) | +17.67% (1,081.940) |
| Post-Iteration | +19.36% (0.09957) | +10.63% (0.89005) | +12.43% (9.643) | +12.67% (92.316) | +13.48% (1,043.352) |
| Pre-Iteration | 0.00% (0.08342) | 0.00% (0.80451) | 0.00% (8.577) | 0.00% (81.998) | 0.00% (919.444) |
Der Artikel PHP Performance – Iteration: Berechnung oder Inkrementierung erschien zuerst auf codeJuice.