Пример #1
0
 protected function getProfile()
 {
     $profile = new Twig_Profiler_Profile();
     $index = new Twig_Profiler_Profile('index.twig', Twig_Profiler_Profile::TEMPLATE);
     $profile->addProfile($index);
     $body = new Twig_Profiler_Profile('embedded.twig', Twig_Profiler_Profile::BLOCK, 'body');
     $body->leave();
     $index->addProfile($body);
     $embedded = new Twig_Profiler_Profile('embedded.twig', Twig_Profiler_Profile::TEMPLATE);
     $included = new Twig_Profiler_Profile('included.twig', Twig_Profiler_Profile::TEMPLATE);
     $embedded->addProfile($included);
     $index->addProfile($embedded);
     $included->leave();
     $embedded->leave();
     $macro = new Twig_Profiler_Profile('index.twig', Twig_Profiler_Profile::MACRO, 'foo');
     $macro->leave();
     $index->addProfile($macro);
     $embedded = clone $embedded;
     $index->addProfile($embedded);
     $a = range(1, 1000);
     $embedded->leave();
     $profile->leave();
     usleep(5000);
     $index->leave();
     return $profile;
 }
Пример #2
0
 public function enter(\Twig_Profiler_Profile $profile)
 {
     if ($this->stopwatch && $profile->isTemplate()) {
         $this->events[$profile] = $this->stopwatch->start($profile->getName(), 'template');
     }
     parent::enter($profile);
 }
Пример #3
0
 public function leave(Twig_Profiler_Profile $profile)
 {
     $profile->leave();
     array_shift($this->actives);
     if (1 === count($this->actives)) {
         $this->actives[0]->leave();
     }
 }
Пример #4
0
 private function format(\Twig_Profiler_Profile $profile)
 {
     $tmp = array();
     $tmp["template"] = $profile->getTemplate();
     $tmp["name"] = $profile->getName();
     $tmp["duration"] = $profile->getDuration();
     $tmp["type"] = $profile->getType();
     return $tmp;
 }
 public function leave(\Twig_Profiler_Profile $profile)
 {
     $profile->leave();
     array_shift($this->actives);
     if (1 === count($this->actives)) {
         $this->actives[0]->leave();
     }
     if ($this->stopwatch && $profile->isTemplate()) {
         $this->events[$profile]->stop();
         unset($this->events[$profile]);
     }
 }
Пример #6
0
 public function testSerialize()
 {
     $profile = new Twig_Profiler_Profile('template', 'type', 'name');
     $profile1 = new Twig_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());
 }
Пример #7
0
 private function dumpProfile(Twig_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;
 }
Пример #8
0
 private function dumpProfile($edge, Twig_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());
     }
 }
Пример #9
0
 protected function formatTime(Twig_Profiler_Profile $profile, $percent)
 {
     return sprintf('<span style="color: %s">%.2fms/%.0f%%</span>', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent);
 }
 protected function formatTime(Twig_Profiler_Profile $profile, $percent)
 {
     return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent);
 }
Пример #11
0
 /**
  * Enter $profile.
  *
  * @param \Twig_Profiler_Profile $profile Profile.
  *
  * @return void
  */
 public function enter(\Twig_Profiler_Profile $profile)
 {
     $name = 'Twig Template: ' . substr($profile->getName(), strlen(ROOT) + 1);
     DebugTimer::start($name, __d('twig_view', $name));
     parent::enter($profile);
 }
 public function testHtmlGraph()
 {
     $profile = new \Twig_Profiler_Profile();
     $template1 = new \Twig_Profiler_Profile('template1', \Twig_Profiler_Profile::TEMPLATE, 'template1');
     $profile->addProfile($template1);
     $profile->enter();
     $template1->enter();
     usleep(10000);
     $template1->leave();
     $profile->leave();
     $collector = new HandlebarsDataCollector($profile);
     $this->assertContains('template1', (string) $collector->getHtmlCallGraph());
 }
 protected function incTemplateCount(\Twig_Profiler_Profile $p, $templates)
 {
     if ($p->isTemplate()) {
         if (!isset($templates[$p->getTemplate()])) {
             $templates[$p->getTemplate()] = 1;
         } else {
             ++$templates[$p->getTemplate()];
         }
     }
     return $templates;
 }