tags:

views:

106

answers:

7

Hi

How to find my code execution time ,

Am using the below snippet,

am not happy with that ?

    list ($msec, $sec) = explode(' ', microtime());
$microtime = (float)$msec + (float)$sec;

Regards

+3  A: 

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
$timer->result();
Sarfraz
+4  A: 

You can use the parameter of microtime :

$microtime = microtime(true);
Arkh
+2  A: 

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.

greg0ire
+1 for suggesting a profiler instead of using microtime(), see http://xdebug.org/docs/profiler
VolkerK
+3  A: 

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.

Ondrej Slinták
A: 

if running *NIX, take a look at the time command: http://en.wikipedia.org/wiki/Time_(Unix)

Flavius Stef
+1  A: 

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';
Mark Baker
A: 

Thanks for sharing your information ,

the below one also LITTLE BIT near of my solu

function microtime_float() {
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}


$time_start = microtime_float();


SOURCE CODE


$time_end = microtime_float();
$time = round($time_end - $time_start, 4);

echo "Last uncached content render took $time seconds";
Bharanikumar