joomla/profiler

Joomla Profiler 包

3.0.0 2023-10-08 13:56 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

jQuery 框架为您提供了一个分析器,用于分析您的扩展运行时执行某些任务或达到各种里程碑所需的时间。

用法

use Joomla\Profiler\Profiler;

// Creating a Profiler having the name "Notes".
$profiler = new Profiler('Notes');

// Mark a point called "Start".
$profiler->mark('Start');

// Execute some code...

// Mark a point called "Middle".
$profiler->mark('Middle');

// Execute some code...

// Mark a point called "End".
$profiler->mark('End');

您至少需要标记第一个点,该点将成为参考点。

现在,您可以检索两个点之间的耗时

use Joomla\Profiler\Profiler;

// Return the elapsed time in seconds between two points (the order does not matter).
$elapsed = $profiler->getTimeBetween('Start', 'Middle');

您还可以检索两个点之间的分配内存量。

use Joomla\Profiler\Profiler;

// Return the amount of allocated memory between these two points.
$elapsed = $profiler->getMemoryBytesBetween('Start', 'Middle');

完成之后,您可以输出结果。

// Will display the profiler results.
echo $profiler;

// Will render the profiler as a string.
$render = $profiler->render();

输出可能如下所示

Notes 0.000 seconds (+0.000); 0.00 MB (+0.000) - Start
Notes 1.000 seconds (+1.000); 3.00 MB (+3.000) - Middle
Notes 1.813 seconds (+0.813); 6.24 MB (+3.240) - End

您可以看到每一行都由您在创建分析器时使用的名称以及您用于标记的名称进行标注。

起始点(第一个标记点)是参考点,因此具有空的时间和使用内存。

我们可以看到在“开始”和“中间”点之间执行的代码耗时 1 秒,并且内存使用量增加了 3 兆字节。

编写自己的渲染器

如果您需要其他格式,则可以编写自己的渲染器。为此,您需要实现 ProfilerRendererInterface。

namespace MyApp;

use Joomla\Profiler\ProfilerRendererInterface;
use Joomla\Profiler\ProfilerInterface;

class MyRenderer implements ProfilerRendererInterface
{
	/**
	 * Renders a profiler.
	 * We want to display the point names and the elapsed time in front of them.
	 *
	 * start : +0 seconds
	 * middle : +x seconds
	 * end : +y seconds.
	 */
	public function render(ProfilerInterface $profiler)
	{
		// Prepare the string.
		$render = '';

		// Initialize a variable containing the last point.
		$lastPoint = null;

		// Get the points in the profiler.
		$points = $profiler->getPoints();

		foreach ($points as $point)
		{
			// Get the time of the last point (if any).
			$lastTime = $lastPoint ? $lastPoint->getTime() : 0;

			$render .= sprintf('%s: %f seconds.', $point->getName(), $point->getTime() - $lastTime);
			$render .= '<br/>';

			$lastPoint = $point;
		}

		return $render;
	}
}

现在您可以在分析器中设置自己的渲染器

$profiler->setRenderer(new MyRenderer);

echo $profiler;

它应该输出如下

Start: 0.000000 seconds.
Middle: 0.000172 seconds.
End: 0.000016 seconds.

通过 Composer 安装

"joomla/profiler": "~3.0" 添加到 composer.json 中的 require 块,然后运行 composer install

{
	"require": {
		"joomla/profiler": "~3.0"
	}
}

或者,您可以直接在命令行中运行以下命令

composer require joomla/profiler "~3.0"