php debug time

neon 23.05.03 13:33

laskee suoritusaikoja debuggausta varten

 Tekstiversio  Arvo: 1 (5 ääntä)  Äänestä: +  -
<?php
/*
* thanks must go to Allan Kent
* original code was made by Allan Kent
* neon <neon@neon-line.net> made some fixes
*/

class PHP_dtime {
    /*
     * @array points
     * muuttuja johon timestampit tallennetaan
     */

    var $points = array();
    /*
     * void start(void)
     * public
     * aloitetaan
     */

    function start() {
        if(!function_exists("bcsub"))
             trigger_error("function bcsub() doesn't exist",256);
        $this->addmark("Start");
    }
    /*
     * void stop(void)
     * public
     * lopetetaan
     */

    function stop() {
        $this->addmark("Stop");
    }
    /*
     * void addmark(string mark_name)
     * public
     * lisätään timestamppi merkille
     */

    function addmark($name) {
        $markertime = $this->__jointime(microtime());
        $ae = count($this->points);
        $this->points[$ae][0] = $markertime;
        $this->points[$ae][1] = $name;
    }
    /*
     * float __jointime(string mtime)
     * private
     * muutetaan liukuluvuksi muotoon
     */

    function __jointime($mtime) {
        $timeparts = explode(" ",$mtime);
        $finaltime = $timeparts[1].substr($timeparts[0],1);
        return $finaltime;
    }
    /*
     * void output(void)
     * public
     * tulostetaan kerätty data
     */

    function output() {
        echo "<table border=0 cellspacing=5 cellpadding=5>\n";
        echo "<tr><td>id</td><td>point</td><td>chunk</td><td>total</td></tr>\n";
        echo "<tr>\n";
        echo "<td>0</td>";
        echo "<td>".$this->points[0][1]."</td>";
        echo "<td>0.0000000000</td><td>0.00000000000</td>\n";
        echo "</tr>\n";
        $last = (float)0;
        for ($i = 1; $i < count($this->points);$i++) {
            echo "<tr>\n";
            echo "<td>".$i."</td>";
            echo "<td>".$this->points[$i][1]."</td>";
            $timeround(((float)$this->points[$i][0]-(float)$this->points[$i-1][0]),10);
            $gap = (float)round($this->points[$i][0]-$this->points[0][0],11);
            $last = $time;
            echo "<td>".$time."</td>";
            echo "<td>".$gap."</td>";
            echo "</tr>\n";
        }
        echo "</table>";
    }
}
/*
**** for example ******
$timer = &new PHP_dtime;
$timer->start();
$timer->addmark("mark 1");
$timer->addmark("mark 2");
$timer->addmark("mark 3");
$timer->stop();
$timer->output();
**********************
*/

?>

Akiro 15:28 23.5.03 
Ihan kätevän oloinen jos etsitään pullonkaulaa skriptistä..
d0ggie 16:03 23.5.03 
Näytää oikein kivalta.
pikkumyy 16:05 26.5.03 
Ihan hauska. Tosin toi output-metodi vois ajaa itse ton stopin ja antaa arvon vasta kun muut 'mark'it on rendattu. Lisäksi aika ja tunnus-kohdat voisivat olla ihan nimillään eivätkä 0 ja 1. Myös bcsub() -funktion käyttö on mielestäni melkoisen turhaa, vaikkakin ne nykyjään näyttävät olevan defaulttina päällä. Eikö samaa olisi voinut tehdä round(((float)$toka-(float)$eka,10)); tms?
pikkumyy 16:05 26.5.03 
äh meni sulut pikkasen väkärälleen :/