windwalker / Profiler

Windwalker Profiler 包

安装: 52

依赖: 0

建议者: 0

安全性: 0

星星: 2

关注者: 4

分支: 0

公开问题: 0

类型:windwalker-package

3.5.23 2019-10-26 15:42 UTC

README

Windwalker Profiler 可以帮助我们分析某些过程信息以进行调试。

通过 Composer 安装

将以下内容添加到您的 composer.json 文件中的 require 块。

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

创建一个分析器和标记一个点

use Windwalker\Profiler\Profiler;

$profiler = new Profiler;

$profiler->mark('StartRender');

// Execute some code...

$profiler->mark('AfterRender');

// Execute some code...

$profiler->mark('End');

现在您可以得到两个点之间的耗时时间

$profiler->getTimeBetween('StartRender', 'AfterRender');

或者获取两个点之间的内存量

// Return memory bytes
$profiler->getMemoryBetween('StartRender', 'AfterRender');

输出结果

echo $profiler->render();
Notes 0.000 seconds (+0.000); 0.00 MB (+0.000) - StartRender
Notes 1.000 seconds (+1.000); 3.00 MB (+3.000) - AfterRender
Notes 1.813 seconds (+0.813); 6.24 MB (+3.240) - End

基准测试

基准测试是一个方便的对象,用于测试两个或更多任务的执行时间。

use Windwalker\Profiler\Banchmark;

$benchmark = new Benchmark;

$benchmark->addTask('task1', function()
{
    md5(uniqid());
})
->addTask('task2', function()
{
    sha1(uniqid());
});

$benchmark->execute(10000);

echo $benchmark->render();

输出

task1 => 0.204897 s
task2 => 0.205108 s

使用其他格式

$benchmark->setTimeFormat(Benchmark::MILLI_SECOND)->execute(10000);

echo $benchmark->render();

/* Result
task1 => 187.489986 ms
task2 => 207.049847 ms
*/
$benchmark->setTimeFormat(Benchmark::MICRO_SECOND)->execute(10000);

echo $benchmark->render();

/* Result
task1 => 198050.9758 μs
task2 => 206343.173981 μs
*/

自定义渲染处理程序

$benchmark->setRenderOneHandler(function($name, $result, $round, $format)
{
    return $name . ' : ' . round($result, $round);
});

$benchmark->render();