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; } } $bm = new benchmark(); $bm->timer_start('bench'); class smallobject { public $avar = 'hello'; public function smallobject() { echo "some hairy constructor\n"; } public function afunc() { echo $avar; } } class largeobject { public $var0 = 'some string'; public $var1 = 'some string'; public $var2 = 'some string'; public $var3 = 'some string'; public $var4 = 'some string'; public $var5 = 'some string'; public $var6 = 'some string'; public $var7 = 'some string'; public $var8 = 'some string'; public $var9 = 'some string'; public $var10 = 'some string'; public $var11 = 'some string'; public $var12 = 'some string'; public $var13 = 'some string'; public $var14 = 'some string'; public $var15 = 'some string'; public $var16 = 'some string'; public $var17 = 'some string'; public $var18 = 'some string'; public $var19 = 'some string'; public $var20 = 'some string'; public $var21 = 'some string'; public $var22 = 'some string'; public $var23 = 'some string'; public $var24 = 'some string'; public $var25 = 'some string'; public $var26 = 'some string'; public $var27 = 'some string'; public $var28 = 'some string'; public $var29 = 'some string'; public $var30 = 'some string'; public $var31 = 'some string'; public $var32 = 'some string'; public $var33 = 'some string'; public $var34 = 'some string'; public $var35 = 'some string'; public $var36 = 'some string'; public $var37 = 'some string'; public $var38 = 'some string'; public $var39 = 'some string'; public $var40 = 'some string'; public function largeobject() { echo "some hairy constructor\n"; } public function afunc11($a) { echo "a function\n"; } public function afunc12($a) { echo "a function\n"; } public function afunc13($a) { echo "a function\n"; } public function afunc14($a) { echo "a function\n"; } public function afunc15($a) { echo "a function\n"; } public function afunc16($a) { echo "a function\n"; } public function afunc17($a) { echo "a function\n"; } public function afunc18($a) { echo "a function\n"; } public function afunc19($a) { echo "a function\n"; } public function afunc20($a) { echo "a function\n"; } public function afunc21($a) { echo "a function\n"; } } $numObjs=50000; // creation of objects for ($i=0; $i<$numObjs; $i++) { $large[$i] = new largeobject(); $large[$i]->small[$i] = new smallobject(); } // calling methods for ($i=0; $i<$numObjs; $i++) { $large[$i]->afunc11('hi'); $large[$i]->afunc12('hi'); $large[$i]->afunc13('hi'); $large[$i]->afunc14('hi'); $large[$i]->afunc15('hi'); $large[$i]->afunc16('hi'); $large[$i]->afunc17('hi'); $large[$i]->afunc18('hi'); $large[$i]->afunc19('hi'); $large[$i]->afunc20('hi'); $large[$i]->afunc21('hi'); } // property access for ($i=0; $i<$numObjs; $i++) { for ($t=0; $t<=40; $t++) { $somevar = 'var'.$t; $a = $large[$i]->$somevar; $b = $large[$i]->small[$i]->avar; } } $bm->timer_stop('bench'); echo '

Result

'; echo $bm->timer_result('bench') .'
'; function getRealSize ($filesize){ if(($filesize/1024)<1024){ return round (($filesize/1024),2) . " kb"; } elseif((($filesize/1024)/1024)<1024){ return round ((($filesize/1024)/1024),2) . " Mb"; } elseif(((($filesize/1024)/1024)/1024)<1024) { return round (((($filesize/1024)/1024)/1024),2) . " Gb"; } else { return round ((((($filesize/1024)/1024)/1024)/1024),2) . " Tb"; } } if (version_compare(phpversion( ), '5.2.0', '>=')) { echo 'Peak Memory: ' . getRealSize(memory_get_peak_usage()) . ' Peak Memory (real): ' . getRealSize(memory_get_peak_usage(true)) . ' memory usage: ' . getRealSize(memory_get_usage()) .'
'; } ob_end_flush(); ?>