Cronometrare il tempo di esecuzione di uno script

7 febbraio 2009

A scopo di testing, o per semplice curiosità personale, può risultare utile conoscere il tempo che un nostro script/pagina di tipo php impiega a essere eseguita.

Si tratta di un procedimento molto semplice, alla portata di tutti, che richiede solamente la dichiarazione di una funzione e di un paio di variabili, e quindi, ripeto, è estremamente facile.

Per realizzare questo contasecondi, ci serviremo della funzione microtime(), che, a differenza della funzione time(), restituisce i microsecondi passati dal 1° Gennaio 1970.

Vi mostrerò prima il codice che useremo per conteggiare il tempo di esecuzione, per poi passare a spiegare passaggio per passaggio lo script.

<?
function tempo() {
list($msec,$sec) = explode(‘ ‘, microtime());
return ((float)$msec + (float)$sec);
}
$start = tempo();

//Qui va il codice da eseguire…

$stop = tempo();
echo ‘Il caricamento della pagina ha impiegato: ‘ . round($stop-$start, 3) . ‘secondi.’;
?>

Tra la dichiarazione della variabile $start e $stop, va inserito il codice di cui si vuole cronometrare il tempo di esecuzione.

Andiamo ad analizzare passo passo lo script. Dopo aver aperto i tag php, procediamo con la dichiarazione della funzione tempo().

function tempo() {

La funzione esegue due operazioni, per prima cosa spezza il valore della funzione microtime(), e ne assegna i due spezzoni derivati dall’uso della funzione explode() alle nuove variabili $msec e $sec.

list($msec,$sec) = explode(‘ ‘, microtime());

Infine, restituisce le due variabili convertite in virgola mobile, addizionate.

return ((float)$msec + (float)$sec);

E’ necessario porre all’inizio dello script la variabile $start assegnandovi il valore derivato dalla funzione tempo(). Al termine dello script, invece, andrà messa la variabile $stop che avrà anch’essa il valore derivante dalla funzione tempo().

$start = tempo();
$stop = tempo();

Alla fine, la funzione round() restituisce arrotondata alla terza cifra decimale la sottrazione tra la variabile iniziale e quella finale.

echo ‘Il caricamento della pagina ha impiegato: ‘ . round($stop-$start, 3) . ‘secondi.’;

Se lo proverete in ambienti di sviluppo installati in locale, ci torneranno numeri davvero molto bassi, io per esempio, non raggiungo mai il secondo, solitamente, rimango anche sotto il decimo di secondo.

Naturalmente è possibile applicare lo script anche a particolari casi di cui si voglia conoscere la performance, parlo di query SQL, o di determinate operazioni e funzioni, e per tutti gli scopi per cui possa servirvi.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: