< ?php
/**
* benchmark
* @access public
* @var $timing_start_times float
* @var $timing_stop_times float
*/
class benchmark{
public $timing_start_times;
public $timing_stop_times;
/**
* benchmark::timer_start()
* @access public
* @param string $name
* @return int
*/
public function timer_start($name = 'default'){
$this->timing_start_times[$name] = explode(' ', microtime());
}
/**
* benchmark::timer_stop()
* @access public
* @param string $name
* @return
*/
public function timer_stop($name = 'default'){
$this->timing_stop_times[$name] = explode(' ', microtime());
}
/**
* benchmark::timer_result()
* @access public
* @param string $name
* @return int
*/
public function timer_result($name = 'default'){
if (!isset($this->timing_start_times[$name])) {
return 0;
}
if (!isset($this->timing_stop_times[$name])) {
$stop_time = explode(' ', microtime());
}
else
{
$stop_time = $this->timing_stop_times[$name];
}
// do the big numbers first so the small ones aren't lost
$current = $stop_time[1] - $this->timing_start_times[$name][1];
$current += $stop_time[0] - $this->timing_start_times[$name][0];
return $current;
}
}
?>
example code
< ?php require_once "benchmark.class.php"; $bm = new benchmark(); ?>Test Inline Tags vs echo
< ?php $bm->timer_start('echo'); ?> < ?php for ($i=0; $i<1000; $i++) { echo $i."
"; } ?> < ?php $bm->timer_stop('echo'); ?>< ?php $bm->timer_start(str); ?> < ?php $str = ''; for ($i=0; $i<1000; $i++) { $str .= $i."
"; } echo $str; ?> < ?php $bm->timer_stop(str); ?>< ?php $bm->timer_start(inline); ?> < ?php for ($i=0; $i<1000; $i++) { ?> 123
< ?php } ?> < ?php $bm->timer_stop(inline); ?>
Result
echo - < ?php echo $bm->timer_result('echo'); ?>str - < ?php echo $bm->timer_result(str); ?>
inline - < ?php echo $bm->timer_result(inline); ?>