Rev Author Line No. Line
250 kaklik 1 <?php
2 /* $Id: profiling.php,v 2.10 2006/01/17 17:03:02 cybot_tm Exp $ */
3 // vim: expandtab sw=4 ts=4 sts=4:
4 /**
5 * holds function for dumping profiling data
6 *
7 * allways use $GLOBALS here, as this script is included by footer.inc.hp
8 * which can also be included from inside a function
9 */
10  
11 if ( ! empty( $GLOBALS['DBG'] )
12 && $GLOBALS['cfg']['DBG']['profile']['enable'] ) {
13  
14 /**
15 * Displays profiling results when called
16 * WARNING: this function is SLOW
17 */
18 function dbg_dump_profiling_results() {
19 /* Applies to the original 'dbg_dump_profiling_results' function,
20 * sourced from http://dd.cron.ru/dbg/download.php?h=prof_sample2
21 * Copyright (c) 2002. Dmitri Dmitrienko
22 * LICENCE: This source file is subject to Mozilla Public License (MPL)
23 * AUTHOR: Dmitri Dmitrienko <dd@cron.ru>
24 */
25 dbg_get_profiler_results( $dbg_prof_results = '' );
26 $cwdlen = strlen(getcwd()); // gma added var, $cwdlen = strlen(getcwd());
27 echo '<br /><table xml:lang="en" dir="ltr" width="1000" cellspacing="0" cellpadding="2" style="font:8pt courier">' . "\n" .
28 '<thead>' . "\n";
29 // gma added "$tr ="
30 $tr = '<tr>' . "\n" .
31 '<th>' . $GLOBALS['strDBGModule'] . '</th>' . "\n" .
32 '<th>' . $GLOBALS['strDBGLine'] . '</th>' . "\n" .
33 '<th>' . $GLOBALS['strDBGHits'] . '</th>' . "\n" .
34 '<th>' . $GLOBALS['strDBGTimePerHitMs'] . '</th>' . "\n" .
35 '<th>' . $GLOBALS['strDBGTotalTimeMs'] . '</th>' . "\n" .
36 '<th>' . $GLOBALS['strDBGMinTimeMs'] . '</th>' . "\n" .
37 '<th>' . $GLOBALS['strDBGMaxTimeMs'] . '</th>' . "\n" .
38 '<th>' . $GLOBALS['strDBGContextID'] . '</th>' . "\n" .
39 '<th>' . $GLOBALS['strDBGContext'] . '</th>' . "\n" .
40 '</tr>' . "\n"; // gma change "." to ";"
41 echo $tr.'</thead><tbody style="vertical-align: top">' . "\n";
42 $lines = 0; // gma added "echo $tr." and "$lines = 0;"
43 $ctx_name = '';
44 $mod_name = '';
45 $ctx_id = '';
46 $odd_row = true;
47 foreach ( $dbg_prof_results['line_no'] as $idx => $line_no ) {
48 dbg_get_module_name( $dbg_prof_results['mod_no'][$idx], $mod_name );
49  
50 //if (strpos("!".$mod_name, 'dbg.php') > 0) continue;
51  
52 $time_sum = $dbg_prof_results['tm_sum'][$idx] * 1000;
53 $time_avg_hit = $time_sum / $dbg_prof_results['hit_count'][$idx];
54  
55 $time_sum = sprintf( '%.3f', $time_sum );
56 $time_avg_hit = sprintf('%.3f', $time_avg_hit);
57 $time_min = sprintf( '%.3f', $dbg_prof_results['tm_min'][$idx] * 1000 );
58 $time_max = sprintf( '%.3f', $dbg_prof_results['tm_max'][$idx] * 1000 );
59 dbg_get_source_context( $dbg_prof_results['mod_no'][$idx],
60 $line_no, $ctx_id );
61  
62 // use a default context name if needed
63 if ( dbg_get_context_name( $ctx_id, $ctx_name )
64 && strlen($ctx_name) == 0 ) {
65 $ctx_name = "::main";
66 }
67  
68 if ( $time_avg_hit > $GLOBALS['cfg']['DBG']['profile']['threshold'] ) {
69 echo '<tr class="' . $odd_row ? 'odd' : 'even' . '">' .
70 // gma changed "$mod_name" to "substr($mod_name, $cwdlen+1)"
71 '<td>' . substr($mod_name, $cwdlen+1) . '</td>' .
72 '<td>' . $line_no . '</td>' .
73 '<td>' . $dbg_prof_results['hit_count'][$idx] . '</td>' .
74 '<td>' . $time_avg_hit . '</td>' .
75 '<td>' . $time_sum . '</td>' .
76 '<td>' . $time_min . '</td>' .
77 '<td>' . $time_max . '</td>' .
78 '<td>' . $ctx_id . '</td>' .
79 '<td>' . $ctx_name . '</td>' .
80 '</tr>' . "\n";
81  
82 // gma added line. Repeats the header every x lines.
83 if ( $lines === 19 ) {
84 $odd_row = true;
85 $lines = 0;
86 echo $tr;
87 } else {
88 $odd_row = ! $odd_row;
89 $lines++;
90 }
91 }
92 }
93 echo '</tbody></table>';
94 }
95 }
96 /* gma ... Developer Notes
97 These two scriptlets can be used as On/Off buttons in your browsers, add to links.
98 ON:
99 javascript: document.cookie = 'DBGSESSID=' + escape('1;d=1,p=1') + '; path=/'; document.execCommand('refresh');
100 or ...
101 javascript: document.cookie = 'DBGSESSID=' + escape('1;d=0,p=1') + '; path=/'; document.execCommand('refresh');
102 OFF:
103 javascript: document.cookie = 'DBGSESSID=' + escape('1;d=0,p=0') + '; path=/'; document.execCommand('refresh');
104 */
105 ?>