Mange sider viser sidens loadtime i bunden af skærmen, og dette er da en meget sjov lille ting, men for brugeren ikke voldsom brugbar, da der er tale om PHPs eksekveringstid.
For udvikleren er dette dog ganske interessant, da man altid kan måle og optimere sin kode ud fra hvor hurtigt den eksekveres. PHP har selvfølgelig en indbygget funktion til dette, microtime() .
microtime() returnerer som standard to numre adskilt af komma (fx 0.37577400 122175750957800), hvoraf det første er mikrosekunder, og det andet er hele sekunder siden 1 Januar 1970 kl. 0 : 00 : 00 (år 0 i computerregning). Hvis vi kalder denne funktion i toppen af vores side og i bunden og trækker disse to tal fra hinanden får vi altså den præcise eksekveringstid for vores PHP script.
PHP 4 og PHP 5 eksempler
Funktionen kan bruges forskelligt afhængigt af om man kører med PHP 5 eller 4. Hvis man sender true med som parameter, laver PHP 5 returværdien om til et gyldigt timestamp, og så kan vi udregne tiden således:
<?php
##indsæt i toppen af dit dokument - henter nuværende tid
$startTid = microtime(true);
## alt din kode her
##indsæt i bunden
$slutTid=microtime(true);
##udskriv load tid
echo 'Loadtid: '.($slutTid-$startTid).' sek.<br>';
?>
Dette er jo super nemt. Desværre skal man lige lave lidt krumspring når det gælder PHP 4, da denne ikke selv kan lave det gyldige timestamp. PHP manualen foreslår PHP 4 brugere bruger følgende funktion:
<?php
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
##indsæt i toppen af dit dokument - henter nuværende tid
$startTid = microtime_float();
## alt din kode her
##indsæt i bunden
$slutTid=microtime_float();
##udskriv load tid
echo 'Loadtid: '.($slutTid-$startTid).' sek.<br>';
?>
Hvor vi før kaldte microtime() direkte, kalder vi nu vores egen funktion som omdanner outputtet fra microtime.
Bonus
En anden god ting at optimere kode ud fra er ram forbruget, og igen har PHP indbygget funktioner til dette, nemlig memory_get_usage(), som giver det nuværende ram forbrug i bytes, og memory-get-peak-usage() som giver antal bytes dit script max har brugt.
Når jeg optimerer kalder jeg gerne memory_get_usage() i toppen og memory_get_peak_usage() i bunden af mit script (se eksempel herunder) - sammen med sidens loadtid er disse tal et rigtigt godt sted at starte når det kommer til optimering.
<?php
##hent nuværende ram forbrug i bytes
echo 'Ramforbrug: '. memory_get_usage().'<br>';
##indsæt i toppen af dit dokument - henter nuværende tid
$startTid = microtime(true);
################
##din kode her##
################
##indsæt i bunden af dit dokument
$slutTid=microtime(true);
## udskriv loadtid samt max ram forbrug
echo 'Loadtid: '.($slutTid-$startTid).' sek.<br>Max Ramforbrug under eksekvering: '.memory_get_peak_usage();
?>
