Revision: 14185
Updated Code
at May 28, 2009 09:12 by birdspider
Updated Code
<?php // simple profiler class // by Patrik Plihal class myProfiler{ var $timestamps = array(); var $cnt = 0; // in fact count(%timestamps)+1 var $style = '<style type="text/css">.profiler{width: 420px; font-size: 11px; border: solid 1px #45A} .tar{text-align:right;} th{background-color: #D9D9D9 !important} .names{width: 150px;} .time1{width: 120px;background-color: #AAD} .time2{width: 120px;background-color: #DDA}</style>'; var $factor; var $unit; function __construct($unit="s",$lazy = false){ if(!$lazy) $this->capture('start'); $this->unit = $unit; switch($unit){ case "ms": $this->factor = 1000; break; case "µs": $this->factor = 1000000; break; default: $this->factor = 1; break; } } function capture($desc){ $this->timestamps []= new myTimeStamp((empty($desc) ? $this->cnt : $desc)); $this->cnt++; } function getReport(){ if($this->cnt < 2) return ""; $rep = "\n capturepoint | absolute relative\n"; $profiletime = $this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time; $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= sprintf("[ %12s ] : %10s %3s %10s %%\n",$this->timestamps[$i]->name,round($delta*$this->factor,5),$this->unit,round(($delta/$profiletime),3)*100); //$delta,($delta/$wholetime)) $lasttime = $this->timestamps[$i]->time; } $rep .= sprintf("[ %12s ] | %10s sec %10s %%\n","summary",round($profiletime,5),100); //$delta,($delta/$wholetime)) return $rep."\n\n"; } function getHTMLReport(){ if($this->cnt < 2) return ""; $rep = $this->style."<div><table class=\"profiler\" border=0>\n"; $rep .= "<thead><tr><th class=\"names tar\">capturepoint</th>\n<th class=\"time1 tar\">absolute</th><th class=\"time2 tar\">relative</th></tr></thead><tbody>\n"; $profiletime = max($this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time,0.0000001); $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= "<tr><td class=\"names tar\">".$this->timestamps[$i]->name."</td><td class=\"time1 tar\">".round($delta*$this->factor,5)." {$this->unit}</td><td class=\"time2 tar\">".(round($delta/$profiletime,3)*100)." %</td></tr>\n"; $lasttime = $this->timestamps[$i]->time; } $rep .= "</tbody><tfoot><tr><th class=\"names tar\">summary</th>\n<th class=\"time1 tar\">".round($profiletime,5)." sec</th><th class=\"time2 tar\">100 %</th></tr></tfoot>\n"; return $rep."</table></div>\n"; } function test(){ print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; print '<html><head></head><body>'; foreach(range(1,5) as $i){ usleep(250000*$i); $this->capture(($i/((float)4))); } print $this->getHTMLReport(); print '</body></html>'; } } class myTimeStamp{ var $name; var $time; function __construct($n,$t = false){ $this->name = $n; $this->time = (empty($t) ? microtime(true) : $t); } } ?>
Revision: 14184
Updated Code
at May 28, 2009 09:11 by birdspider
Updated Code
<?php // simple profiler class // by Patrik Plihal // digiconcept class myProfiler{ var $timestamps = array(); var $cnt = 0; // in fact count(%timestamps)+1 var $style = '<style type="text/css">.profiler{width: 420px; font-size: 11px; border: solid 1px #45A} .tar{text-align:right;} th{background-color: #D9D9D9 !important} .names{width: 150px;} .time1{width: 120px;background-color: #AAD} .time2{width: 120px;background-color: #DDA}</style>'; var $factor; var $unit; function __construct($unit="s",$lazy = false){ if(!$lazy) $this->capture('start'); $this->unit = $unit; switch($unit){ case "ms": $this->factor = 1000; break; case "µs": $this->factor = 1000000; break; default: $this->factor = 1; break; } } function capture($desc){ $this->timestamps []= new myTimeStamp((empty($desc) ? $this->cnt : $desc)); $this->cnt++; } function getReport(){ if($this->cnt < 2) return ""; $rep = "\n capturepoint | absolute relative\n"; $profiletime = $this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time; $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= sprintf("[ %12s ] : %10s %3s %10s %%\n",$this->timestamps[$i]->name,round($delta*$this->factor,5),$this->unit,round(($delta/$profiletime),3)*100); //$delta,($delta/$wholetime)) $lasttime = $this->timestamps[$i]->time; } $rep .= sprintf("[ %12s ] | %10s sec %10s %%\n","summary",round($profiletime,5),100); //$delta,($delta/$wholetime)) return $rep."\n\n"; } function getHTMLReport(){ if($this->cnt < 2) return ""; $rep = $this->style."<div><table class=\"profiler\" border=0>\n"; $rep .= "<thead><tr><th class=\"names tar\">capturepoint</th>\n<th class=\"time1 tar\">absolute</th><th class=\"time2 tar\">relative</th></tr></thead><tbody>\n"; $profiletime = max($this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time,0.0000001); $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= "<tr><td class=\"names tar\">".$this->timestamps[$i]->name."</td><td class=\"time1 tar\">".round($delta*$this->factor,5)." {$this->unit}</td><td class=\"time2 tar\">".(round($delta/$profiletime,3)*100)." %</td></tr>\n"; $lasttime = $this->timestamps[$i]->time; } $rep .= "</tbody><tfoot><tr><th class=\"names tar\">summary</th>\n<th class=\"time1 tar\">".round($profiletime,5)." sec</th><th class=\"time2 tar\">100 %</th></tr></tfoot>\n"; return $rep."</table></div>\n"; } function test(){ print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; print '<html><head></head><body>'; foreach(range(1,5) as $i){ usleep(250000*$i); $this->capture(($i/((float)4))); } print $this->getHTMLReport(); print '</body></html>'; } } class myTimeStamp{ var $name; var $time; function __construct($n,$t = false){ $this->name = $n; $this->time = (empty($t) ? microtime(true) : $t); } } ?>
Revision: 14183
Updated Code
at May 28, 2009 09:09 by birdspider
Updated Code
<?php // simple profiler class // by Patrik Plihal // digiconcept class myProfiler{ var $timestamps = array(); var $cnt = 0; // in fact count(%timestamps)+1 var $style = '<style type="text/css">.profiler{width: 420px; font-size: 11px; border: solid 1px #45A} .tar{text-align:right;} th{background-color: #D9D9D9 !important} .names{width: 150px;} .time1{width: 120px;background-color: #AAD} .time2{width: 120px;background-color: #DDA}</style>'; var $factor; var $unit; function __construct($unit="s",$lazy = false){ if(!$lazy) $this->capture('start'); $this->unit = $unit; switch($unit){ case "ms": $this->factor = 1000; break; case "ns": $this->factor = 1000000; break; default: $this->factor = 1; break; } } function capture($desc){ $this->timestamps []= new myTimeStamp((empty($desc) ? $this->cnt : $desc)); $this->cnt++; } function getReport(){ if($this->cnt < 2) return ""; $rep = "\n capturepoint | absolute relative\n"; $profiletime = $this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time; $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= sprintf("[ %12s ] : %10s %3s %10s %%\n",$this->timestamps[$i]->name,round($delta*$this->factor,5),$this->unit,round(($delta/$profiletime),3)*100); //$delta,($delta/$wholetime)) $lasttime = $this->timestamps[$i]->time; } $rep .= sprintf("[ %12s ] | %10s sec %10s %%\n","summary",round($profiletime,5),100); //$delta,($delta/$wholetime)) return $rep."\n\n"; } function getHTMLReport(){ if($this->cnt < 2) return ""; $rep = $this->style."<div><table class=\"profiler\" border=0>\n"; $rep .= "<thead><tr><th class=\"names tar\">capturepoint</th>\n<th class=\"time1 tar\">absolute</th><th class=\"time2 tar\">relative</th></tr></thead><tbody>\n"; $profiletime = max($this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time,0.0000001); $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= "<tr><td class=\"names tar\">".$this->timestamps[$i]->name."</td><td class=\"time1 tar\">".round($delta*$this->factor,5)." {$this->unit}</td><td class=\"time2 tar\">".(round($delta/$profiletime,3)*100)." %</td></tr>\n"; $lasttime = $this->timestamps[$i]->time; } $rep .= "</tbody><tfoot><tr><th class=\"names tar\">summary</th>\n<th class=\"time1 tar\">".round($profiletime,5)." sec</th><th class=\"time2 tar\">100 %</th></tr></tfoot>\n"; return $rep."</table></div>\n"; } function test(){ print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; print '<html><head></head><body>'; foreach(range(1,5) as $i){ usleep(250000*$i); $this->capture(($i/((float)4))); } print $this->getHTMLReport(); print '</body></html>'; } } class myTimeStamp{ var $name; var $time; function __construct($n,$t = false){ $this->name = $n; $this->time = (empty($t) ? microtime(true) : $t); } } ?>
Revision: 14182
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 22, 2009 05:30 by birdspider
Initial Code
<?php // simple profiler class // by birdspider <nemora at gmx TOD at> // GPL // as-is class myProfiler{ var $timestamps = array(); var $cnt = 0; // in fact count(%timestamps)+1 var $style = '<style type="text/css">.profiler{width: 420px; font-size: 11px; border: solid 1px #45A} .tar{text-align:right;} th{background-color: #D9D9D9 !important} .names{width: 150px;} .time1{width: 120px;background-color: #AAD} .time2{width: 120px;background-color: #DDA}</style>'; function __construct($lazy = false){ if(!$lazy) $this->capture('start'); } function capture($desc){ $this->timestamps []= new myTimeStamp((empty($desc) ? $this->cnt : $desc)); $this->cnt++; } function getReport(){ if($this->cnt < 2) return ""; $rep = "\n capturepoint | absolute relative\n"; $profiletime = $this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time; $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= sprintf("[ %12s ] : %10s sec %10s %%\n",$this->timestamps[$i]->name,round($delta,5),round(($delta/$profiletime),3)*100); //$delta,($delta/$wholetime)) $lasttime = $this->timestamps[$i]->time; } $rep .= sprintf("[ %12s ] | %10s sec %10s %%\n","summary",round($profiletime,5),100); //$delta,($delta/$wholetime)) return $rep."\n\n"; } function getHTMLReport(){ if($this->cnt < 2) return ""; $rep = $this->style."<div><table class=\"profiler\" border=0>\n"; $rep .= "<thead><tr><th class=\"names tar\">capturepoint</th>\n<th class=\"time1 tar\">absolute</th><th class=\"time2 tar\">relative</th></tr></thead><tbody>\n"; $profiletime = max($this->timestamps[$this->cnt-1]->time - $this->timestamps[0]->time,0.0000001); $lasttime = $this->timestamps[0]->time; for($i = 1; $i < $this->cnt; $i++){ $delta = $this->timestamps[$i]->time - $lasttime; $rep .= "<tr><td class=\"names tar\">".$this->timestamps[$i]->name."</td><td class=\"time1 tar\">".round($delta,5)." sec</td><td class=\"time2 tar\">".(round($delta/$profiletime,3)*100)." %</td></tr>\n"; $lasttime = $this->timestamps[$i]->time; } $rep .= "</tbody><tfoot><tr><th class=\"names tar\">summary</th>\n<th class=\"time1 tar\">".round($profiletime,5)." sec</th><th class=\"time2 tar\">100 %</th></tr></tfoot>\n"; return $rep."</table></div>\n"; } function test(){ print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; print '<html><head></head><body>'; foreach(range(1,5) as $i){ usleep(250000*$i); $this->capture(($i/((float)4))); } print $this->getHTMLReport(); print '</body></html>'; } } class myTimeStamp{ var $name; var $time; function __construct($n,$t = false){ $this->name = $n; $this->time = (empty($t) ? microtime(true) : $t); } } ?>
Initial URL
Initial Description
Rather simple profiler for > php5, if you want to find out where the heck those 0.5 sec function time goes into
Initial Title
Simple Profiler
Initial Tags
php
Initial Language
PHP