PHP code execution time

后端 未结 9 950
既然无缘
既然无缘 2021-02-14 14:13

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         


        
相关标签:
9条回答
  • 2021-02-14 14:13

    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';
    
    0 讨论(0)
  • 2021-02-14 14:18

    If running Unix, take a look at the time command:

    0 讨论(0)
  • 2021-02-14 14:21

    You can use the parameter of microtime :

    $microtime = microtime(true);
    
    0 讨论(0)
  • 2021-02-14 14:22

    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.

    0 讨论(0)
  • 2021-02-14 14:26

    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.

    0 讨论(0)
  • 2021-02-14 14:37

    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();
    
    0 讨论(0)
提交回复
热议问题