TTJ #002 Prestazione dei cicli con contatore (di G. Gimigliano)

Transcript

TTJ #002 Prestazione dei cicli con contatore (di G. Gimigliano)
> TTJ #002 Prestazione dei cicli con contatore (di G. Gimigliano) Il confronto fra le strutture di controllo per gestire i cicli
Durante i miei corsi spesso sento dire che la for è più performante di una while quando si fanno cicli con contatore. Questo era vero per vecchi linguaggi compilati come il Pascal che associava alla for la primitiva loop del processore, costringendo però sempre e solo a incrementi unitari. In PHP l'uso della for al posto di una while può essere consigliabile solo per motivi di leggibilità ma non certo di prestazioni. Il seguente script mostra come sia la while che la do…while siano generalmente abbiano prestazioni migliori rispetto a una for. In particolare la do…while è sensibilmente più veloce perché può fare a meno di uno statement. <?
$start = microtime(1);
for($i=0;$i<10000000;++$i) {
//istruzioni
}
$end = microtime(1);
$tFor = $end - $start;
$start = microtime(1);
$i=0;
while ($i<10000000) {
//istruzioni
++$i;
}
$end = microtime(1);
$tWhile = $end - $start;
$start = microtime(1);
$i=0;
do {
//istruzioni
} while (++$i<10000000);
$end = microtime(1);
$tDoWhile = $end - $start;
echo "\nVariazione percentuale di While
rispetto For:
".(100*($tWhile-$tFor)/$tFor)."%";
echo "\nVariazione percentuale di Do While rispetto For:
".(100*($tDoWhile-$tFor)/$tFor)."%\n";
?> Zend Technologies srl Largo Richini, 6 20122 Milano Telefono: +39 02 5821 5832 Fax: +39 02 5821 5400 ©Zend Technologies, Inc. Visita il sito www.zend.com/it Pagina 1 di 1