Chris@17
|
1 <?php
|
Chris@17
|
2 /**
|
Chris@17
|
3 * Timing functions for the run.
|
Chris@17
|
4 *
|
Chris@17
|
5 * @author Greg Sherwood <gsherwood@squiz.net>
|
Chris@17
|
6 * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
|
Chris@17
|
7 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
|
Chris@17
|
8 */
|
Chris@17
|
9
|
Chris@17
|
10 namespace PHP_CodeSniffer\Util;
|
Chris@17
|
11
|
Chris@17
|
12 class Timing
|
Chris@17
|
13 {
|
Chris@17
|
14
|
Chris@17
|
15 /**
|
Chris@17
|
16 * The start time of the run.
|
Chris@17
|
17 *
|
Chris@17
|
18 * @var float
|
Chris@17
|
19 */
|
Chris@17
|
20 private static $startTime;
|
Chris@17
|
21
|
Chris@17
|
22 /**
|
Chris@17
|
23 * Used to make sure we only print the run time once per run.
|
Chris@17
|
24 *
|
Chris@17
|
25 * @var boolean
|
Chris@17
|
26 */
|
Chris@17
|
27 private static $printed = false;
|
Chris@17
|
28
|
Chris@17
|
29
|
Chris@17
|
30 /**
|
Chris@17
|
31 * Start recording time for the run.
|
Chris@17
|
32 *
|
Chris@17
|
33 * @return void
|
Chris@17
|
34 */
|
Chris@17
|
35 public static function startTiming()
|
Chris@17
|
36 {
|
Chris@17
|
37
|
Chris@17
|
38 self::$startTime = microtime(true);
|
Chris@17
|
39
|
Chris@17
|
40 }//end startTiming()
|
Chris@17
|
41
|
Chris@17
|
42
|
Chris@17
|
43 /**
|
Chris@17
|
44 * Print information about the run.
|
Chris@17
|
45 *
|
Chris@17
|
46 * @param boolean $force If TRUE, prints the output even if it has
|
Chris@17
|
47 * already been printed during the run.
|
Chris@17
|
48 *
|
Chris@17
|
49 * @return void
|
Chris@17
|
50 */
|
Chris@17
|
51 public static function printRunTime($force=false)
|
Chris@17
|
52 {
|
Chris@17
|
53 if ($force === false && self::$printed === true) {
|
Chris@17
|
54 // A double call.
|
Chris@17
|
55 return;
|
Chris@17
|
56 }
|
Chris@17
|
57
|
Chris@17
|
58 if (self::$startTime === null) {
|
Chris@17
|
59 // Timing was never started.
|
Chris@17
|
60 return;
|
Chris@17
|
61 }
|
Chris@17
|
62
|
Chris@17
|
63 $time = ((microtime(true) - self::$startTime) * 1000);
|
Chris@17
|
64
|
Chris@17
|
65 if ($time > 60000) {
|
Chris@17
|
66 $mins = floor($time / 60000);
|
Chris@17
|
67 $secs = round((($time % 60000) / 1000), 2);
|
Chris@17
|
68 $time = $mins.' mins';
|
Chris@17
|
69 if ($secs !== 0) {
|
Chris@17
|
70 $time .= ", $secs secs";
|
Chris@17
|
71 }
|
Chris@17
|
72 } else if ($time > 1000) {
|
Chris@17
|
73 $time = round(($time / 1000), 2).' secs';
|
Chris@17
|
74 } else {
|
Chris@17
|
75 $time = round($time).'ms';
|
Chris@17
|
76 }
|
Chris@17
|
77
|
Chris@17
|
78 $mem = round((memory_get_peak_usage(true) / (1024 * 1024)), 2).'MB';
|
Chris@17
|
79 echo "Time: $time; Memory: $mem".PHP_EOL.PHP_EOL;
|
Chris@17
|
80
|
Chris@17
|
81 self::$printed = true;
|
Chris@17
|
82
|
Chris@17
|
83 }//end printRunTime()
|
Chris@17
|
84
|
Chris@17
|
85
|
Chris@17
|
86 }//end class
|