Hovednavigation

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();
?>

Relaterede blogindlæg

Del
Indlægget blev skrevet af Martin d. 18/09, 2008 kl 20:02

Kommentarer

RSS Feed for dette indlæg

GravImg
Skrevet af Claus
20/09 - 2008 kl. 01:12

Endnu en brugbar ting fra dig Martin. Det kan jeg sagtens bruge til at optimerer mine php sites med. ty. Loadtiden er en god faktor til at måle hvor effektive mine kald og funktioner er

GravImg
Skrevet af Martin Nielsen
20/09 - 2008 kl. 12:12

Ja selvom det er utrolig simpel kode er det absolut noget man bør checke på alle sites, specielt når man arbejder på de lidt større sites.

Der har været en del der har skrevet og spurgt om jeg ikke ville gennemgå nogle af de funktioner jeg ofte bruger, så selvom det måske ikke lige er rocket science så kommer der nok en del af den her slags i fremtiden.

GravImg
Skrevet af Claus
20/09 - 2008 kl. 15:13

Du kan måske lave en miniguide i hvordan man laver et check på et filnavn. Og hvis filnavnet = true så udfør en handling. Ved godt det er ret simpelt, men en ting jeg tit må lede efter da PHP endnu ikke er på rygraden :)

GravImg
Skrevet af Niels Gamborg
21/09 - 2008 kl. 10:40

Tak for endnu et nyttigt tip, Martin. :)

Godt du kom igang med at blogge igen.


Ny kommentar








Sikkerheds kode





DanskeWeblogs.dk | Samling af de danske blogs