コード例 #1
0
ファイル: Profiler.php プロジェクト: apishka/templater
 public function leave(Apishka_Templater_Profiler_Profile $profile)
 {
     $profile->leave();
     array_shift($this->actives);
     if (1 === count($this->actives)) {
         $this->actives[0]->leave();
     }
 }
コード例 #2
0
ファイル: ProfileTest.php プロジェクト: apishka/templater
 public function testSerialize()
 {
     $profile = new Apishka_Templater_Profiler_Profile('template', 'type', 'name');
     $profile1 = new Apishka_Templater_Profiler_Profile('template1', 'type1', 'name1');
     $profile->addProfile($profile1);
     $profile->leave();
     $profile1->leave();
     $profile2 = unserialize(serialize($profile));
     $profiles = $profile->getProfiles();
     $this->assertCount(1, $profiles);
     $profile3 = $profiles[0];
     $this->assertEquals($profile->getTemplate(), $profile2->getTemplate());
     $this->assertEquals($profile->getType(), $profile2->getType());
     $this->assertEquals($profile->getName(), $profile2->getName());
     $this->assertEquals($profile->getDuration(), $profile2->getDuration());
     $this->assertEquals($profile1->getTemplate(), $profile3->getTemplate());
     $this->assertEquals($profile1->getType(), $profile3->getType());
     $this->assertEquals($profile1->getName(), $profile3->getName());
 }
コード例 #3
0
ファイル: Text.php プロジェクト: apishka/templater
 private function dumpProfile(Apishka_Templater_Profiler_Profile $profile, $prefix = '', $sibling = false)
 {
     if ($profile->isRoot()) {
         $this->root = $profile->getDuration();
         $start = $profile->getName();
     } else {
         if ($profile->isTemplate()) {
             $start = $this->formatTemplate($profile, $prefix);
         } else {
             $start = $this->formatNonTemplate($profile, $prefix);
         }
         $prefix .= $sibling ? '│ ' : '  ';
     }
     $percent = $this->root ? $profile->getDuration() / $this->root * 100 : 0;
     if ($profile->getDuration() * 1000 < 1) {
         $str = $start . "\n";
     } else {
         $str = sprintf("%s %s\n", $start, $this->formatTime($profile, $percent));
     }
     $nCount = count($profile->getProfiles());
     foreach ($profile as $i => $p) {
         $str .= $this->dumpProfile($p, $prefix, $i + 1 !== $nCount);
     }
     return $str;
 }
コード例 #4
0
ファイル: Blackfire.php プロジェクト: apishka/templater
 private function dumpProfile($edge, Apishka_Templater_Profiler_Profile $profile, &$data)
 {
     if (isset($data[$edge])) {
         $data[$edge]['ct'] += 1;
         $data[$edge]['wt'] += floor($profile->getDuration() * 1000000);
         $data[$edge]['mu'] += $profile->getMemoryUsage();
         $data[$edge]['pmu'] += $profile->getPeakMemoryUsage();
     } else {
         $data[$edge] = array('ct' => 1, 'wt' => floor($profile->getDuration() * 1000000), 'mu' => $profile->getMemoryUsage(), 'pmu' => $profile->getPeakMemoryUsage());
     }
 }
コード例 #5
0
ファイル: Html.php プロジェクト: apishka/templater
 protected function formatTime(Apishka_Templater_Profiler_Profile $profile, $percent)
 {
     return sprintf('<span style="color: %s">%.2fms/%.0f%%</span>', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent);
 }