How to find my code execution time?
I am using the below snippet.
I am not happy with that?
list ($msec, $sec) = explode(\' \', microtime());
$mi
If you want the actual processor timings:
$rUsage = getrusage();
echo 'User time = '.sprintf('%.4f',($rUsage['ru_utime.tv_sec'] * 1e6 + $rUsage['ru_utime.tv_usec']) / 1e6).' seconds';
echo 'system time = '.sprintf('%.4f',($rUsage['ru_stime.tv_sec'] * 1e6 + $rUsage['ru_stime.tv_usec']) / 1e6).' seconds';
If running Unix, take a look at the time command:
You can use the parameter of microtime :
$microtime = microtime(true);
I'm using following class to determine time elapsed:
class StopWatch {
private static $total;
public static function start() {
self::$total = microtime(true);
}
public static function elapsed() {
return microtime(true) - self::$total;
}
}
You just have to call StopWatch::start
at the beginning and StopWatch::elapsed
whenever you want to know how much time elapsed from the start.
If you want to profile your script, use XDebug + {K,Win}Cachegrind, these are free tools that provide a visual map of your code's execution.
I have created this simple class for that:
class timer
{
private $start_time = NULL;
private $end_time = NULL;
private function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->start_time = $this->getmicrotime();
}
function stop()
{
$this->end_time = $this->getmicrotime();
}
function result()
{
if (is_null($this->start_time))
{
exit('Timer: start method not called !');
return false;
}
else if (is_null($this->end_time))
{
exit('Timer: stop method not called !');
return false;
}
return round(($this->end_time - $this->start_time), 4);
}
# an alias of result function
function time()
{
$this->result();
}
}
To time scripts, you can put it to use like:
$timer = new timer();
$timer->start();
// your code now
$timer->stop();
// show result now
echo $timer->result();