* @copyright 2015 PrestaShow.pl * @license http://PrestaShow.pl/license */ class PShow_Timer { private $start = null; private $finish = null; private static $instance = null; public static function getInstance() { if (self::$instance === null) { self::$instance = new PShow_Timer(); } return self::$instance; } public function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float) $usec + (float) $sec); } public function start() { $this->start = $this->getmicrotime(); return $this; } public function finish() { $this->finish = $this->getmicrotime(); return $this; } public function getElapsedTime($precision = false, $forcePrecisionLength = true) { if ($this->start === null) { return 0; } $time = $this->getmicrotime() - $this->start; if (is_numeric($precision)) { $time = round($time, $precision); } if ($forcePrecisionLength) { $adjustedLeadingZeros = 0 + mb_strlen('.') + $precision; return sprintf("%0" . $adjustedLeadingZeros . "." . $precision . "f", $time); } return $time; } }