De traagheid van count() in een loop (2)
Naar aanleiding van Xander's reactie op mijn vorige post over dit onderwerp heb ik nog wat benchmarks gedaan:
Foreach()
PHP:
Dat levert een resultaat op wat me lang niet tegenvalt, namelijk: 0.1648 seconden.
While()
De oude vertrouwde while()-loop met een count() bij elke iteratie blijkt toch nog wat sneller te zijn dan de for(). Hij komt namelijk tot een gemiddelde tijd (over 10 metingen) van 0.3529 seconden met de volgende code:
PHP:
Ook hier heb ik weer getest een variabele met het aantal items zodat count() maar 1x aangeroepen hoeft te worden:
PHP:
Dat blijkt tot mijn verrassing de snelste te zijn, namelijk een gemiddelde van 0.0871 seconden. Het scheelt maar 0,1 seconden met de snelste for() oplossing, maar toch.
Overzicht van de resultaten:
Foreach()
PHP:
| <?php
|
Dat levert een resultaat op wat me lang niet tegenvalt, namelijk: 0.1648 seconden.
While()
De oude vertrouwde while()-loop met een count() bij elke iteratie blijkt toch nog wat sneller te zijn dan de for(). Hij komt namelijk tot een gemiddelde tijd (over 10 metingen) van 0.3529 seconden met de volgende code:
PHP:
| <?php
|
Ook hier heb ik weer getest een variabele met het aantal items zodat count() maar 1x aangeroepen hoeft te worden:
PHP:
| <?php
|
Dat blijkt tot mijn verrassing de snelste te zijn, namelijk een gemiddelde van 0.0871 seconden. Het scheelt maar 0,1 seconden met de snelste for() oplossing, maar toch.
Overzicht van de resultaten:
| Loop | Resultaat (in seconden) |
| For() met count() bij elke iteratie | 0.4338 |
| For() met count() vooraf | 0.0988 |
| Foreach() | 0.1648 |
| While() met count() bij elke iteratie | 0.3529 |
| While() met count() vooraf | 0.0871 |
|
|
PHP performance testen |
|
|
Hehe, die baardaap is weer het land uit |
Reacties
Deze tip is ook te vinden op http://reinholdweber.com/?p=3
Wel leuk leesvoer voor de php devvers onder ons.
Wel leuk leesvoer voor de php devvers onder ons.
Maar een foreach 'simuleren' met andere constructies is toch een vreselijk karwij (voor zover het uberhaupt kan), dus er zijn wel degelijk situaties waar de foreach boven een for met count() vooraf gaat.