You are here

Blackfire.php in Zircon Profile 8.0

Same filename and directory in other branches
  1. 8 vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php

File

vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
View source
<?php

/*
 * This file is part of Twig.
 *
 * (c) 2015 Fabien Potencier
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * @author Fabien Potencier <fabien@symfony.com>
 */
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(),
      );
    }
  }

}

Classes

Namesort descending Description
Twig_Profiler_Dumper_Blackfire @author Fabien Potencier <fabien@symfony.com>