chajr/class-benchmark

此包已被放弃,不再维护。作者建议使用 bluetree-service/benchmark 包。

类基准库

0.5.1.1 2018-12-17 17:34 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:40:15 UTC


README

文档

计时器基本用法

  1. 通过执行 \Benchmark\Performance\Timer::start() 来启动基准测试,这将启动时间存储。
  2. 要从 开始时间 测量时间,直到某个位置使用 ::setMarker('some description'),这将保存从开始或上一个标记到当前位置的执行时间和内存使用。
  3. 设置了一些标记后,使用 ::stop() 来停止基准测试。
  4. 使用 ::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());
  1. 如果您想获取格式化的输出,请查看下面的 计时器格式化输出 部分。

计时器高级用法

为了更清楚地查看,我们可以将统计信息组合成组,以查看整个组的时间和内存使用情况。要开始测量组,使用 ::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&nbsp;&nbsp;&nbsp;&nbsp;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)将自动加载。

项目描述

使用的约定

  • 命名空间 - 每个库都使用命名空间
  • PSR-4 - PSR-4编码标准
  • Composer - 使用Composer加载/更新库

要求

  • PHP 5.4或更高版本
  • 启用DOM扩展

变更日志

所有发布版本的变化
变更日志

许可

此软件包在Apache 2.0许可下发布。
Apache许可证