bluetree-service / benchmark
类基准库
Requires
- php: >=7.1.0
- symfony/console: ^4.1
- twig/twig: ^2.5
Requires (Dev)
- phpunit/phpunit: ~7
- satooshi/php-coveralls: 1.0.*
README
文档
计时器基本用法
- 通过执行
\Benchmark\Performance\Timer::start()
开始基准测试,这将启动时间存储。 - 要测量从 开始时间 到某个位置的时间,使用
::setMarker('some description')
,这将保存从开始或上一个标记到当前位置的执行时间和内存使用。 - 设置了一些标记后,使用
::stop()
来停止基准测试。 - 使用
::calculateStats()
获取关于执行时间和内存使用的详细信息。
\Benchmark\Performance\Timer::start(); sleep 3; \Benchmark\Performance\Timer::setMarker('sleep'); sleep 5; \Benchmark\Performance\Timer::setMarker('another sleep'); \Benchmark\Performance\Timer::stop(); var_dump(\Benchmark\Performance\Timer::calculateStats());
- 如果您想获取格式化输出,请向下查看 计时器格式化输出 部分。
计时器高级用法
为了更清晰地查看,我们可以将统计数据分组,以查看整个组使用了多少时间和内存。要开始测量组,使用 ::startGroup('group name')
,在组内设置标记,并使用与相同名称的 ::endGroup('group name')
保存组内的统计数据。当然,也可以创建嵌套的组。
计时器其他函数
- start() 可以有一个额外的布尔参数,如果为 false,则整个计时器将禁用
- turnOffBenchmark() 允许关闭计时器
- turnOnBenchmark() 允许开启计时器
计时器格式化输出
有三种方法可以获得格式化输出。第一种允许以格式化的时间、内存和百分比值的数组形式获取输出。第二种允许通过 Symfony Console 输出类进行格式化。最后一种允许以 HTML 格式获取输出。
预格式化数组
在执行 \Benchmark\Performance\Timer::stop();
后,执行 (Timer::getFormattedOutput('raw+')
来获取格式化的内存、时间和百分比的数组。使用 raw 作为参数返回原始值,与使用 \Benchmark\Performance\Timer::calculateStats();
的用法相同。
控制台输出
在执行 \Benchmark\Performance\Timer::stop();
后,执行 (Timer::getFormattedOutput('shell')
来获取控制台格式化的输出。输出将与以下内容等效
Total application runtime: ~1 001.8280 ms Total memory usage: ~3602 kB
=========================================================================
val: 0 ~0.0050 ms 0.00050 % ~0,000 kB
val: 1 ~100.1649 ms 9.99821 % ~0,000 kB
val: 2 ~100.1842 ms 10.00014 % ~0,000 kB
val: 3 ~100.1740 ms 9.99912 % ~0,000 kB
val: 4 ~100.1639 ms 9.99812 % ~0,000 kB
example group START
val: 0 ~100.2018 ms 10.00190 % ~0,000 kB
val: 1 ~100.1649 ms 9.99821 % ~0,000 kB
val: 2 ~100.1790 ms 9.99962 % ~0,000 kB
val: 3 ~100.1539 ms 9.99712 % ~0,000 kB
val: 4 ~100.1499 ms 9.99671 % ~0,000 kB
example group END
HTML 输出
在执行 \Benchmark\Performance\Timer::stop();
后,执行 (Timer::getFormattedOutput('html')
来获取浏览器格式化的输出。输出将与以下内容等效
<div style=" color: #fff; background-color: #000; border: 1px solid #fff; width: 90%; text-align: center; margin: 25px auto; "> Total application runtime: ~1 001.8280 ms Total memory usage: ~3129.140625 kB <br /> <br /> Marker times: <br /> <table style="width:100%"> <tr style="background-color:#202020"> <td style="width:40%;color:#fff">val: 0</td> <td style="width:20%;color: #fff;">~0.0050 ms</td> <td style="width:20%;color: #fff;">0.00050 %</td> <td style="width:20%;color:#fff">~0,000 kB</td> </tr>
编写自己的输出格式化器
如果您想以自己的指定格式获取数据,可以将它应用到 calculateStats
方法上。此方法接受 callable
类型的参数,在返回数据数组之前对数据数组进行处理。
在原始代码中是这样实现的:self::calculateStats([Formatter::class, 'formatValues']);
这将执行 Formatter::class
类中的 formatValues
方法。
截图
通过 Composer 安装
要使用包,您只需下载包并将其放置在您的代码中。但推荐使用 ClassBenchmark 的方法是通过 Composer 安装。要包含 ClassBenchmark 库,请将其粘贴到 composer json 中
{ "require": { "chajr/class-benchmark": "version" } }
对 ClassBenchmark 库(ClassKernel)的要求将被自动加载。
项目描述
使用的约定
要求
- PHP 5.4 或更高版本
- 启用 DOM 扩展
变更日志
所有发布版本变更
变更日志
许可证
本软件包遵循Apache 2.0许可证发布。
Apache许可证