Skip to content
Extraits de code Groupes Projets
Timer.php 1,77 ko
Newer Older
  • Learn to ignore specific revisions
  •  * Piwik - free/libre analytics platform
    
    robocoder's avatar
    robocoder a validé
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
    
        private $timerStart;
        private $memoryStart;
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @return \Piwik\Timer
         */
    
        public function __construct()
        {
            $this->init();
        }
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @return void
         */
    
        public function init()
        {
            $this->timerStart = $this->getMicrotime();
            $this->memoryStart = $this->getMemoryUsage();
        }
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @param int $decimals
         * @return string
         */
    
        public function getTime($decimals = 3)
        {
            return number_format($this->getMicrotime() - $this->timerStart, $decimals, '.', '');
        }
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @param int $decimals
         * @return string
         */
    
        public function getTimeMs($decimals = 3)
        {
            return number_format(1000 * ($this->getMicrotime() - $this->timerStart), $decimals, '.', '');
        }
    
    mattpiwik's avatar
    mattpiwik a validé
    
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @return string
         */
    
            return "Memory delta: " . MetricsFormatter::getPrettySizeFromBytes($this->getMemoryUsage() - $this->memoryStart);
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @return string
         */
    
        public function __toString()
        {
            return "Time elapsed: " . $this->getTime() . "s";
        }
    
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * @return float
         */
    
        private function getMicrotime()
        {
            list($micro_seconds, $seconds) = explode(" ", microtime());
            return ((float)$micro_seconds + (float)$seconds);
        }
    
    
    sgiehl's avatar
    sgiehl a validé
        /**
         * Returns current memory usage, if available
         *
         * @return int
         */
    
        private function getMemoryUsage()
        {
            if (function_exists('memory_get_usage')) {
                return memory_get_usage();
            }
            return 0;
        }