Remove collateOnly() from ProfilerStandard and subclasses
[lhc/web/wiklou.git] / includes / profiler / ProfilerSimpleTrace.php
index 5588d1e..95e4bc6 100644 (file)
  */
 
 /**
- * Execution trace
+ * Execution trace profiler
  * @todo document methods (?)
  * @ingroup Profiler
  */
-class ProfilerSimpleTrace extends ProfilerSimple {
-       var $trace = "Beginning trace: \n";
-       var $memory = 0;
+class ProfilerSimpleTrace extends ProfilerStandard {
+       protected $trace = "Beginning trace: \n";
+       protected $memory = 0;
 
-       function profileIn( $functionname ) {
+       public function profileIn( $functionname ) {
                parent::profileIn( $functionname );
+
                $this->trace .= "         " . sprintf( "%6.1f", $this->memoryDiff() ) .
-                               str_repeat( " ", count( $this->mWorkStack ) ) . " > " . $functionname . "\n";
+                       str_repeat( " ", count( $this->mWorkStack ) ) . " > " . $functionname . "\n";
        }
 
-       function profileOut( $functionname ) {
-               global $wgDebugFunctionEntry;
-
-               if ( $wgDebugFunctionEntry ) {
-                       $this->debug( str_repeat( ' ', count( $this->mWorkStack ) - 1 ) . 'Exiting ' . $functionname . "\n" );
-               }
+       public function profileOut( $functionname ) {
+               $item = end( $this->mWorkStack );
 
-               list( $ofname, /* $ocount */, $ortime ) = array_pop( $this->mWorkStack );
+               parent::profileOut( $functionname );
 
-               if ( !$ofname ) {
+               if ( !$item ) {
                        $this->trace .= "Profiling error: $functionname\n";
                } else {
+                       list( $ofname, /* $ocount */, $ortime ) = $item;
                        if ( $functionname == 'close' ) {
                                $message = "Profile section ended by close(): {$ofname}";
                                $functionname = $ofname;
                                $this->trace .= $message . "\n";
-                       }
-                       elseif ( $ofname != $functionname ) {
+                       } elseif ( $ofname != $functionname ) {
                                $this->trace .= "Profiling error: in({$ofname}), out($functionname)";
                        }
                        $elapsedreal = $this->getTime() - $ortime;
                        $this->trace .= sprintf( "%03.6f %6.1f", $elapsedreal, $this->memoryDiff() ) .
-                                       str_repeat( " ", count( $this->mWorkStack ) + 1 ) . " < " . $functionname . "\n";
-
-                       $this->updateTrxProfiling( $functionname, $elapsedreal );
+                               str_repeat( " ", count( $this->mWorkStack ) + 1 ) . " < " . $functionname . "\n";
                }
        }
 
-       function memoryDiff() {
+       protected function memoryDiff() {
                $diff = memory_get_usage() - $this->memory;
                $this->memory = memory_get_usage();
                return $diff / 1024;
        }
 
-       function logData() {
-               if ( PHP_SAPI === 'cli' ) {
-                       print "<!-- \n {$this->trace} \n -->";
-               } elseif ( $this->getContentType() === 'text/html' ) {
-                       print "<!-- \n {$this->trace} \n -->";
-               } elseif ( $this->getContentType() === 'text/javascript' ) {
-                       print "\n/*\n {$this->trace}\n*/";
-               } elseif ( $this->getContentType() === 'text/css' ) {
-                       print "\n/*\n {$this->trace}\n*/";
+       public function logData() {
+               if ( $this->mTemplated ) {
+                       if ( PHP_SAPI === 'cli' ) {
+                               print "<!-- \n {$this->trace} \n -->";
+                       } elseif ( $this->getContentType() === 'text/html' ) {
+                               print "<!-- \n {$this->trace} \n -->";
+                       } elseif ( $this->getContentType() === 'text/javascript' ) {
+                               print "\n/*\n {$this->trace}\n*/";
+                       } elseif ( $this->getContentType() === 'text/css' ) {
+                               print "\n/*\n {$this->trace}\n*/";
+                       }
                }
        }
 }