From 107293bd6173af37bcabb946b932169009ce84b9 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Wed, 20 Feb 2019 17:12:40 +0100 Subject: [PATCH 1/3] Fixing rendertime --- src/Util/Profiler.php | 121 +++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 56 deletions(-) diff --git a/src/Util/Profiler.php b/src/Util/Profiler.php index 2d3da3a9c0..115e75f7ba 100644 --- a/src/Util/Profiler.php +++ b/src/Util/Profiler.php @@ -119,18 +119,76 @@ class Profiler implements ContainerInterface $this->callstack['parser'] = []; } + /** + * Returns the rendertime string + * + * @return string the rendertime + */ + public function getRendertimeString() + { + $output = ''; + + if (!$this->enabled || !$this->rendertime) { + return $output; + } + + if (isset($this->callstack["database"])) { + $output .= "\nDatabase Read:\n"; + foreach ($this->callstack["database"] as $func => $time) { + $time = round($time, 3); + if ($time > 0) { + $output .= $func . ": " . $time . "\n"; + } + } + } + if (isset($this->callstack["database_write"])) { + $output .= "\nDatabase Write:\n"; + foreach ($this->callstack["database_write"] as $func => $time) { + $time = round($time, 3); + if ($time > 0) { + $output .= $func . ": " . $time . "\n"; + } + } + } + if (isset($this->callstack["cache"])) { + $output .= "\nCache Read:\n"; + foreach ($this->callstack["cache"] as $func => $time) { + $time = round($time, 3); + if ($time > 0) { + $output .= $func . ": " . $time . "\n"; + } + } + } + if (isset($this->callstack["cache_write"])) { + $output .= "\nCache Write:\n"; + foreach ($this->callstack["cache_write"] as $func => $time) { + $time = round($time, 3); + if ($time > 0) { + $output .= $func . ": " . $time . "\n"; + } + } + } + if (isset($this->callstack["network"])) { + $output .= "\nNetwork:\n"; + foreach ($this->callstack["network"] as $func => $time) { + $time = round($time, 3); + if ($time > 0) { + $output .= $func . ": " . $time . "\n"; + } + } + } + + return $output; + } + /** * Save the current profiling data to a log entry * - * @param LoggerInterface $logger The logger to save the current log + * @param LoggerInterface $logger The logger to save the current log * @param string $message Additional message for the log */ public function saveLog(LoggerInterface $logger, $message = '') { - // Write down the performance values into the log - if (!$this->enabled) { - return; - } $duration = microtime(true) - $this->get('start'); $logger->info( $message, @@ -149,57 +207,8 @@ class Profiler implements ContainerInterface ] ); - if (!$this->rendertime) { - return; - } - - $o = ''; - if (isset($this->callstack["database"])) { - $o .= "\nDatabase Read:\n"; - foreach ($this->callstack["database"] as $func => $time) { - $time = round($time, 3); - if ($time > 0) { - $o .= $func . ": " . $time . "\n"; - } - } - } - if (isset($this->callstack["database_write"])) { - $o .= "\nDatabase Write:\n"; - foreach ($this->callstack["database_write"] as $func => $time) { - $time = round($time, 3); - if ($time > 0) { - $o .= $func . ": " . $time . "\n"; - } - } - } - if (isset($this->callstack["cache"])) { - $o .= "\nCache Read:\n"; - foreach ($this->callstack["cache"] as $func => $time) { - $time = round($time, 3); - if ($time > 0) { - $o .= $func . ": " . $time . "\n"; - } - } - } - if (isset($this->callstack["cache_write"])) { - $o .= "\nCache Write:\n"; - foreach ($this->callstack["cache_write"] as $func => $time) { - $time = round($time, 3); - if ($time > 0) { - $o .= $func . ": " . $time . "\n"; - } - } - } - if (isset($this->callstack["network"])) { - $o .= "\nNetwork:\n"; - foreach ($this->callstack["network"] as $func => $time) { - $time = round($time, 3); - if ($time > 0) { - $o .= $func . ": " . $time . "\n"; - } - } - } - $logger->info($message . ": " . $o, ['action' => 'profiling']); + $output = $this->getRendertimeString(); + $logger->info($message . ": " . $output, ['action' => 'profiling']); } /** From 466f7a0ee5eb21dd54c0bea536d562fe1e8afb85 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Wed, 20 Feb 2019 17:20:17 +0100 Subject: [PATCH 2/3] adding test --- src/Util/Profiler.php | 16 ++++++++++++++-- tests/src/Util/ProfilerTest.php | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Util/Profiler.php b/src/Util/Profiler.php index 115e75f7ba..c8c5633718 100644 --- a/src/Util/Profiler.php +++ b/src/Util/Profiler.php @@ -32,6 +32,16 @@ class Profiler implements ContainerInterface */ private $rendertime; + /** + * True, if the Profiler should measure the whole rendertime including functions + * + * @return bool + */ + public function isRendertime() + { + return $this->rendertime; + } + /** * @param bool $enabled True, if the Profiler is enabled * @param bool $renderTime True, if the Profiler should measure the whole rendertime including functions @@ -207,8 +217,10 @@ class Profiler implements ContainerInterface ] ); - $output = $this->getRendertimeString(); - $logger->info($message . ": " . $output, ['action' => 'profiling']); + if ($this->isRendertime()) { + $output = $this->getRendertimeString(); + $logger->info($message . ": " . $output, ['action' => 'profiling']); + } } /** diff --git a/tests/src/Util/ProfilerTest.php b/tests/src/Util/ProfilerTest.php index f242fd43c5..8ceb59ea5e 100644 --- a/tests/src/Util/ProfilerTest.php +++ b/tests/src/Util/ProfilerTest.php @@ -177,5 +177,25 @@ class ProfilerTest extends MockedTest } $profiler->saveLog($this->logger, 'test'); + + $output = $profiler->getRendertimeString(); + + foreach ($data as $perf => $items) { + foreach ($items['functions'] as $function) { + // assert that the output contains the functions + $this->assertRegExp('/' . $function . ': \d+/', $output); + } + } + } + + /** + * Test if no rendertime is set + */ + public function testNoRenderTime() + { + $profiler = new Profiler(true, false); + + $this->assertFalse($profiler->isRendertime()); + self::assertEmpty($profiler->getRendertimeString()); } } From 52c5ef9a75da012607cc43cd9b8b254a19871bc2 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Wed, 20 Feb 2019 17:37:46 +0100 Subject: [PATCH 3/3] bugfix test --- tests/src/Util/ProfilerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/src/Util/ProfilerTest.php b/tests/src/Util/ProfilerTest.php index 8ceb59ea5e..87796a2f37 100644 --- a/tests/src/Util/ProfilerTest.php +++ b/tests/src/Util/ProfilerTest.php @@ -196,6 +196,6 @@ class ProfilerTest extends MockedTest $profiler = new Profiler(true, false); $this->assertFalse($profiler->isRendertime()); - self::assertEmpty($profiler->getRendertimeString()); + $this->assertEmpty($profiler->getRendertimeString()); } }