Blackfire.php in Zircon Profile 8
File
vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
View source
<?php
class Twig_Profiler_Dumper_Blackfire {
public function dump(Twig_Profiler_Profile $profile) {
$data = array();
$this
->dumpProfile('main()', $profile, $data);
$this
->dumpChildren('main()', $profile, $data);
$start = microtime(true);
$str = <<<EOF
file-format: BlackfireProbe
cost-dimensions: wt mu pmu
request-start: {<span class="php-variable">$start</span>}
EOF;
foreach ($data as $name => $values) {
$str .= "{$name}//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n";
}
return $str;
}
private function dumpChildren($parent, Twig_Profiler_Profile $profile, &$data) {
foreach ($profile as $p) {
if ($p
->isTemplate()) {
$name = $p
->getTemplate();
}
else {
$name = sprintf('%s::%s(%s)', $p
->getTemplate(), $p
->getType(), $p
->getName());
}
$this
->dumpProfile(sprintf('%s==>%s', $parent, $name), $p, $data);
$this
->dumpChildren($name, $p, $data);
}
}
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(),
);
}
}
}