Chris@17: Chris@17: * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600) Chris@17: * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence Chris@17: */ Chris@17: Chris@17: namespace PHP_CodeSniffer\Util; Chris@17: Chris@17: class Timing Chris@17: { Chris@17: Chris@17: /** Chris@17: * The start time of the run. Chris@17: * Chris@17: * @var float Chris@17: */ Chris@17: private static $startTime; Chris@17: Chris@17: /** Chris@17: * Used to make sure we only print the run time once per run. Chris@17: * Chris@17: * @var boolean Chris@17: */ Chris@17: private static $printed = false; Chris@17: Chris@17: Chris@17: /** Chris@17: * Start recording time for the run. Chris@17: * Chris@17: * @return void Chris@17: */ Chris@17: public static function startTiming() Chris@17: { Chris@17: Chris@17: self::$startTime = microtime(true); Chris@17: Chris@17: }//end startTiming() Chris@17: Chris@17: Chris@17: /** Chris@17: * Print information about the run. Chris@17: * Chris@17: * @param boolean $force If TRUE, prints the output even if it has Chris@17: * already been printed during the run. Chris@17: * Chris@17: * @return void Chris@17: */ Chris@17: public static function printRunTime($force=false) Chris@17: { Chris@17: if ($force === false && self::$printed === true) { Chris@17: // A double call. Chris@17: return; Chris@17: } Chris@17: Chris@17: if (self::$startTime === null) { Chris@17: // Timing was never started. Chris@17: return; Chris@17: } Chris@17: Chris@17: $time = ((microtime(true) - self::$startTime) * 1000); Chris@17: Chris@17: if ($time > 60000) { Chris@17: $mins = floor($time / 60000); Chris@17: $secs = round((($time % 60000) / 1000), 2); Chris@17: $time = $mins.' mins'; Chris@17: if ($secs !== 0) { Chris@17: $time .= ", $secs secs"; Chris@17: } Chris@17: } else if ($time > 1000) { Chris@17: $time = round(($time / 1000), 2).' secs'; Chris@17: } else { Chris@17: $time = round($time).'ms'; Chris@17: } Chris@17: Chris@17: $mem = round((memory_get_peak_usage(true) / (1024 * 1024)), 2).'MB'; Chris@17: echo "Time: $time; Memory: $mem".PHP_EOL.PHP_EOL; Chris@17: Chris@17: self::$printed = true; Chris@17: Chris@17: }//end printRunTime() Chris@17: Chris@17: Chris@17: }//end class