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