Пример #1
0
 public static function set($title = NULL, $data = NULL)
 {
     static $last = NULL;
     //	If no title is set, use the code location which executed the set() method
     if ($title === NULL) {
         $title = Amslib_Debug::getCodeLocation(3);
     }
     $time = microtime(true);
     //	If is first benchmark point, set the start time to this time
     if (self::$start === NULL) {
         self::$start = $time;
     }
     //	Always set the finish time to the last benchmark point
     self::$finish = $time;
     //	Set the total to the subtraction of the last and first benchmark points
     self::$total = self::$finish - self::$start;
     //	calculate the diff only when there was a previous benchmark point set
     $diff = $last === NULL ? 0 : $time - $last["time"];
     //	Set the basic data
     $e = array("title" => $title, "time" => $time, "diff" => $diff);
     //	Save the data, store the last entry, add it to the list and return it to the calling method
     if ($data !== NULL) {
         $e["data"] = $data;
     }
     //	Retain a copy of the previous execution so you can do the differential easier
     $last = $e;
     switch (self::$mode) {
         case "record":
             self::$entries[] = $e;
             break;
         case "log":
             //	FIXME: refactor against log()
             Amslib_Debug::log("title[{$title}], time[{$time}], diff[{$diff}]");
             break;
     }
     return $e;
 }