Temat: Przeprowadzanie testów wydajności
Data: 2006-01-16 o godz. 21:36:47
Autor: Duch


Chcesz sprawdzić wydajność poszczególnych fragmentów Twojego kodu PHP? Możesz w tym celu wykorzystać funkcję debug_timing(), która znajduje się poniżej.

Kod PHP
001 <?php
002
003 /*=====================================================================*\
004     Funkcja:       debug_timing
005     Przeznaczenie: Funkcja służąca do testowania wydajności skryptu
006     Wejście:       $label - znacznik tekstowy wskazujący punkt wykonania
007                    'init' - inicjuje nowe uruchomienie
008                    'print' - wyświetla czas wykonania
009 \*=====================================================================*/

010
011 function debug_timing ($label) {
012     static $basetime,
013            $totaltime,
014            $rpttimes;
015
016     if ($label == 'init') {
017         $rpttimes = array();
018         $basetime = microtime();
019         $totaltime = 0;
020         ereg ("^([^ ]+) (.+)", $basetime, $r);
021         $basetime = doubleval ($r[2]) + doubleval ($r[1]);
022
023         return;
024     }
025
026     if ($label == 'print') {
027         // wypisz na ekranie
028         echo "<B>Czasy wykonania:</B><BR>\n";
029         for ($i=0; $i < count ($rpttimes); $i++) {
030             echo " (".$rpttimes[$i].") sek.<BR>\n";
031         }
032         echo "łącznie: (".$totaltime.") sek.\n";
033
034         return;
035     }
036
037     // zapamiętaj i dodaj czas trwania
038     $newtime = microtime();
039     ereg ("^([^ ]+) (.+)", $newtime, $r);
040     $newtime = doubleval ($r[2]) + doubleval ($r[1]);
041
042     $diff = $newtime - $basetime;
043     $rpttimes[] = sprintf ("%-20s %s", $label, $diff);
044     $basetime = $newtime;
045     $totaltime += $diff;
046 }
047
048
049 /* Przykład wykorzystania funkcji debug_timing do przeprowadzenia testu wydajności kodu */
050
051 debug_timing('init'); // nowe uruchomienie
052
053 for ($i=0; $i<1000; $i++) {
054      $tabela1[$i];
055 }
056
057 debug_timing('Wynik pętli for:');
058
059 $y = 0;
060 while ($y<1000) {
061        $tabela2[$y];
062        $y++;
063 }
064
065 debug_timing('Wynik pętli while:');
066 debug_timing('print'); // sumowanie wyników
067
068 ?>


Pobierz Skrypt



Artykuł jest z Twoja-Strona.Net
http://twoja-strona.net/html

Adres tego artykułu to:
http://twoja-strona.net/html/Biblioteka_Art381.html