summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Profiler
diff options
context:
space:
mode:
authorAppleman1234 <applemansigloo@gmail.com>2022-09-25 13:22:40 +1000
committerAppleman1234 <applemansigloo@gmail.com>2022-09-25 13:22:40 +1000
commit92561d7f36508b7e0271926e417adf0e2e53916b (patch)
treea8588b4f70af276c5acf58836e33b1f6ff5c61e8 /inc/lib/Twig/Profiler
parent6f1083e4b51fc9c4c594f6c72cf3d84ef4d0298b (diff)
Initial attempt a switch to composer and PHP-8.1 compatibility
Diffstat (limited to 'inc/lib/Twig/Profiler')
-rw-r--r--inc/lib/Twig/Profiler/Dumper/Base.php62
-rw-r--r--inc/lib/Twig/Profiler/Dumper/Blackfire.php72
-rw-r--r--inc/lib/Twig/Profiler/Dumper/Html.php47
-rw-r--r--inc/lib/Twig/Profiler/Dumper/Text.php35
-rw-r--r--inc/lib/Twig/Profiler/Node/EnterProfile.php39
-rw-r--r--inc/lib/Twig/Profiler/Node/LeaveProfile.php33
-rw-r--r--inc/lib/Twig/Profiler/NodeVisitor/Profiler.php67
-rw-r--r--inc/lib/Twig/Profiler/Profile.php170
8 files changed, 0 insertions, 525 deletions
diff --git a/inc/lib/Twig/Profiler/Dumper/Base.php b/inc/lib/Twig/Profiler/Dumper/Base.php
deleted file mode 100644
index 913afd4f..00000000
--- a/inc/lib/Twig/Profiler/Dumper/Base.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- */
-abstract class Twig_Profiler_Dumper_Base
-{
- private $root;
-
- public function dump(Twig_Profiler_Profile $profile)
- {
- return $this->dumpProfile($profile);
- }
-
- abstract protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix);
-
- abstract protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix);
-
- abstract protected function formatTime(Twig_Profiler_Profile $profile, $percent);
-
- 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;
- }
-}
-
-class_alias('Twig_Profiler_Dumper_Base', 'Twig\Profiler\Dumper\BaseDumper', false);
-class_exists('Twig_Profiler_Profile');
diff --git a/inc/lib/Twig/Profiler/Dumper/Blackfire.php b/inc/lib/Twig/Profiler/Dumper/Blackfire.php
deleted file mode 100644
index 7a33baf2..00000000
--- a/inc/lib/Twig/Profiler/Dumper/Blackfire.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- *
- * @final
- */
-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 = sprintf('%f', microtime(true));
- $str = <<<EOF
-file-format: BlackfireProbe
-cost-dimensions: wt mu pmu
-request-start: {$start}
-
-
-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(),
- );
- }
- }
-}
-
-class_alias('Twig_Profiler_Dumper_Blackfire', 'Twig\Profiler\Dumper\BlackfireDumper', false);
diff --git a/inc/lib/Twig/Profiler/Dumper/Html.php b/inc/lib/Twig/Profiler/Dumper/Html.php
deleted file mode 100644
index b57a2551..00000000
--- a/inc/lib/Twig/Profiler/Dumper/Html.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- *
- * @final
- */
-class Twig_Profiler_Dumper_Html extends Twig_Profiler_Dumper_Base
-{
- private static $colors = array(
- 'block' => '#dfd',
- 'macro' => '#ddf',
- 'template' => '#ffd',
- 'big' => '#d44',
- );
-
- public function dump(Twig_Profiler_Profile $profile)
- {
- return '<pre>'.parent::dump($profile).'</pre>';
- }
-
- protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix)
- {
- return sprintf('%s└ <span style="background-color: %s">%s</span>', $prefix, self::$colors['template'], $profile->getTemplate());
- }
-
- protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix)
- {
- return sprintf('%s└ %s::%s(<span style="background-color: %s">%s</span>)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName());
- }
-
- 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);
- }
-}
-
-class_alias('Twig_Profiler_Dumper_Html', 'Twig\Profiler\Dumper\HtmlDumper', false);
diff --git a/inc/lib/Twig/Profiler/Dumper/Text.php b/inc/lib/Twig/Profiler/Dumper/Text.php
deleted file mode 100644
index 69d2c4bf..00000000
--- a/inc/lib/Twig/Profiler/Dumper/Text.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- *
- * @final
- */
-class Twig_Profiler_Dumper_Text extends Twig_Profiler_Dumper_Base
-{
- protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix)
- {
- return sprintf('%s└ %s', $prefix, $profile->getTemplate());
- }
-
- protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix)
- {
- return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName());
- }
-
- protected function formatTime(Twig_Profiler_Profile $profile, $percent)
- {
- return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent);
- }
-}
-
-class_alias('Twig_Profiler_Dumper_Text', 'Twig\Profiler\Dumper\TextDumper', false);
diff --git a/inc/lib/Twig/Profiler/Node/EnterProfile.php b/inc/lib/Twig/Profiler/Node/EnterProfile.php
deleted file mode 100644
index 69c8f797..00000000
--- a/inc/lib/Twig/Profiler/Node/EnterProfile.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a profile enter node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Node_EnterProfile extends Twig_Node
-{
- public function __construct($extensionName, $type, $name, $varName)
- {
- parent::__construct(array(), array('extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName));
- }
-
- public function compile(Twig_Compiler $compiler)
- {
- $compiler
- ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name')))
- ->repr($this->getAttribute('extension_name'))
- ->raw(");\n")
- ->write(sprintf('$%s->enter($%s = new Twig_Profiler_Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
- ->repr($this->getAttribute('type'))
- ->raw(', ')
- ->repr($this->getAttribute('name'))
- ->raw("));\n\n")
- ;
- }
-}
-
-class_alias('Twig_Profiler_Node_EnterProfile', 'Twig\Profiler\Node\EnterProfileNode', false);
diff --git a/inc/lib/Twig/Profiler/Node/LeaveProfile.php b/inc/lib/Twig/Profiler/Node/LeaveProfile.php
deleted file mode 100644
index d1d6a7cc..00000000
--- a/inc/lib/Twig/Profiler/Node/LeaveProfile.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a profile leave node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Node_LeaveProfile extends Twig_Node
-{
- public function __construct($varName)
- {
- parent::__construct(array(), array('var_name' => $varName));
- }
-
- public function compile(Twig_Compiler $compiler)
- {
- $compiler
- ->write("\n")
- ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
- ;
- }
-}
-
-class_alias('Twig_Profiler_Node_LeaveProfile', 'Twig\Profiler\Node\LeaveProfileNode', false);
diff --git a/inc/lib/Twig/Profiler/NodeVisitor/Profiler.php b/inc/lib/Twig/Profiler/NodeVisitor/Profiler.php
deleted file mode 100644
index 5db41fea..00000000
--- a/inc/lib/Twig/Profiler/NodeVisitor/Profiler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- *
- * @final
- */
-class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor
-{
- private $extensionName;
-
- public function __construct($extensionName)
- {
- $this->extensionName = $extensionName;
- }
-
- protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
- {
- return $node;
- }
-
- protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
- {
- if ($node instanceof Twig_Node_Module) {
- $varName = $this->getVarName();
- $node->setNode('display_start', new Twig_Node(array(new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::TEMPLATE, $node->getTemplateName(), $varName), $node->getNode('display_start'))));
- $node->setNode('display_end', new Twig_Node(array(new Twig_Profiler_Node_LeaveProfile($varName), $node->getNode('display_end'))));
- } elseif ($node instanceof Twig_Node_Block) {
- $varName = $this->getVarName();
- $node->setNode('body', new Twig_Node_Body(array(
- new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::BLOCK, $node->getAttribute('name'), $varName),
- $node->getNode('body'),
- new Twig_Profiler_Node_LeaveProfile($varName),
- )));
- } elseif ($node instanceof Twig_Node_Macro) {
- $varName = $this->getVarName();
- $node->setNode('body', new Twig_Node_Body(array(
- new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::MACRO, $node->getAttribute('name'), $varName),
- $node->getNode('body'),
- new Twig_Profiler_Node_LeaveProfile($varName),
- )));
- }
-
- return $node;
- }
-
- private function getVarName()
- {
- return sprintf('__internal_%s', hash('sha256', $this->extensionName));
- }
-
- public function getPriority()
- {
- return 0;
- }
-}
-
-class_alias('Twig_Profiler_NodeVisitor_Profiler', 'Twig\Profiler\NodeVisitor\ProfilerNodeVisitor', false);
diff --git a/inc/lib/Twig/Profiler/Profile.php b/inc/lib/Twig/Profiler/Profile.php
deleted file mode 100644
index 3fdc1a8a..00000000
--- a/inc/lib/Twig/Profiler/Profile.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 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>
- *
- * @final
- */
-class Twig_Profiler_Profile implements IteratorAggregate, Serializable
-{
- const ROOT = 'ROOT';
- const BLOCK = 'block';
- const TEMPLATE = 'template';
- const MACRO = 'macro';
-
- private $template;
- private $name;
- private $type;
- private $starts = array();
- private $ends = array();
- private $profiles = array();
-
- public function __construct($template = 'main', $type = self::ROOT, $name = 'main')
- {
- $this->template = $template;
- $this->type = $type;
- $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name;
- $this->enter();
- }
-
- public function getTemplate()
- {
- return $this->template;
- }
-
- public function getType()
- {
- return $this->type;
- }
-
- public function getName()
- {
- return $this->name;
- }
-
- public function isRoot()
- {
- return self::ROOT === $this->type;
- }
-
- public function isTemplate()
- {
- return self::TEMPLATE === $this->type;
- }
-
- public function isBlock()
- {
- return self::BLOCK === $this->type;
- }
-
- public function isMacro()
- {
- return self::MACRO === $this->type;
- }
-
- public function getProfiles()
- {
- return $this->profiles;
- }
-
- public function addProfile(Twig_Profiler_Profile $profile)
- {
- $this->profiles[] = $profile;
- }
-
- /**
- * Returns the duration in microseconds.
- *
- * @return int
- */
- public function getDuration()
- {
- if ($this->isRoot() && $this->profiles) {
- // for the root node with children, duration is the sum of all child durations
- $duration = 0;
- foreach ($this->profiles as $profile) {
- $duration += $profile->getDuration();
- }
-
- return $duration;
- }
-
- return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0;
- }
-
- /**
- * Returns the memory usage in bytes.
- *
- * @return int
- */
- public function getMemoryUsage()
- {
- return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0;
- }
-
- /**
- * Returns the peak memory usage in bytes.
- *
- * @return int
- */
- public function getPeakMemoryUsage()
- {
- return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0;
- }
-
- /**
- * Starts the profiling.
- */
- public function enter()
- {
- $this->starts = array(
- 'wt' => microtime(true),
- 'mu' => memory_get_usage(),
- 'pmu' => memory_get_peak_usage(),
- );
- }
-
- /**
- * Stops the profiling.
- */
- public function leave()
- {
- $this->ends = array(
- 'wt' => microtime(true),
- 'mu' => memory_get_usage(),
- 'pmu' => memory_get_peak_usage(),
- );
- }
-
- public function reset()
- {
- $this->starts = $this->ends = $this->profiles = array();
- $this->enter();
- }
-
- public function getIterator()
- {
- return new ArrayIterator($this->profiles);
- }
-
- public function serialize()
- {
- return serialize(array($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles));
- }
-
- public function unserialize($data)
- {
- list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = unserialize($data);
- }
-}
-
-class_alias('Twig_Profiler_Profile', 'Twig\Profiler\Profile', false);