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