bluetree-service/benchmark

0.5.1.1 2018-12-17 17:34 UTC

This package is auto-updated.

Last update: 2024-09-18 05:40:24 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许可证