source: trunk/lib/ScriptTimer.inc.php @ 92

Last change on this file since 92 was 92, checked in by scdev, 18 years ago

Q - Complete rebuild of PEdit

File size: 1.7 KB
Line 
1<?php
2/**
3 * ScriptTimer.inc.php
4 * Code by Strangecode :: www.strangecode.com :: This document contains copyrighted information
5 */
6 
7class ScriptTimer {
8
9    var $time_format = '%.10s';
10    var $_timing_start_times = array();
11    var $_timing_stop_times = array();
12    var $_timing_cumulative_times = array();
13   
14    function start($name='default')
15    {
16        $this->_timing_start_times[$name] = explode(' ', microtime());
17    }
18   
19    function stop($name='default')
20    {
21        $this->_timing_stop_times[$name] = explode(' ', microtime());
22        $this->_timing_cumulative_times[$name] += $this->getTime($name);
23    }
24   
25    function getTime($name='default')
26    {
27        if (!isset($this->_timing_start_times[$name])) {
28            return 0;
29        }
30        if (!isset($this->_timing_stop_times[$name])) {
31            $stop_time = explode(' ', microtime());
32        } else {
33            $stop_time = $this->_timing_stop_times[$name];
34        }
35        // Do the big numbers first so the small ones aren't lost.
36        $current = $stop_time[1] - $this->_timing_start_times[$name][1];
37        $current += $stop_time[0] - $this->_timing_start_times[$name][0];
38        return $current;
39    }
40   
41    function printAll($sort_by_time=false)
42    {
43        $names = array_map('strlen', array_keys($this->_timing_start_times));
44        sort($names);
45        $name_len = end($names);
46       
47        if ($sort_by_time) {
48           arsort($this->_timing_cumulative_times, SORT_NUMERIC);
49        }
50       
51        $this->_timing_cumulative_times["TOTAL"] = array_sum($this->_timing_cumulative_times);
52
53        echo '<pre>';
54        foreach ($this->_timing_cumulative_times as $name => $time) {
55            printf("\n%-{$name_len}s $this->time_format", $name, $time);
56        }
57        echo '</pre>';
58    }
59}
60
61?>
Note: See TracBrowser for help on using the repository browser.