bahge / analysys-tools

该软件包最新版本(v1.0.0)没有可用的许可证信息。

性能分析工具库。

v1.0.0 2023-11-21 02:50 UTC

This package is not auto-updated.

Last update: 2024-09-25 05:20:58 UTC


README

创建的库,用于应用性能分析,通过计算步骤的秒数进行计算。

用例

代码的执行时间和性能分析

  1. 启动计时器
    使用静态方法 PerformanceTracker::create(),实例化到您想要操作的变量中,这里命名为 $performanceTracker
  2. 添加分析点
    通过 addMarkTracker(string $mensagem) 方法添加,描述信息应尽量客观,信息量越大,消耗的资源越多。
  3. 捕获事件
    可以通过方法 getEventsTrackerToJson()getEventsTracker() 返回事件;
    第一个方法返回 JSON 格式,第二个方法返回 PHP 序列化格式,如下所示,为每个方法的示例部分。
  4. 捕获总计
    处理时间总计可以通过方法 calc()getTotals() 返回。建议使用 getTotals() 进行显示,因为它已经格式化为字符串。另一方面,方法 calc() 仅返回格式化后的数字,按 pt-br 标准显示(例如,用于保存到日志和数据库,不推荐)。
<?php

use Bahge\AnalisysTools\Domain\PerformanceTracker;

require '../vendor/autoload.php';

$performanceTracker = PerformanceTracker::create();

for ($i=0; $i < (2 ** 6); $i++) { 
    sleep(rand(0,1)); // Apenas como critério de teste, para gerar randomicamente uma pausa
    $performanceTracker->addMarkTracker("Iteração: $i");
}

echo $performanceTracker->getEventsTracker() . PHP_EOL;

echo $performanceTracker->getEventsTrackerToJson() . PHP_EOL;

echo $performanceTracker->getTotals() . PHP_EOL;

echo $performanceTracker->calc() . PHP_EOL;

在测试中,生成 64 个步骤,并使用 getEventsTracker(), getEventsTrackerToJson() 函数打印所有结果,结果如下:

Impressão dos eventos serializados: 
 
i:4;:a:3:{s:4:"time";d:1700533033.571543;s:3:"msg";s:18:"Inicio dos eventos";s:15:"processing_time";i:0;}:a:3:{s:4:"time";d:1700533033.571992;s:3:"msg";s:13:"Iteração: 0";s:15:"processing_time";s:10:"0.00044894";}:a:3:{s:4:"time";d:1700533033.572084;s:3:"msg";s:13:"Iteração: 1";s:15:"processing_time";s:10:"0.00009203";} ...
 
Impressãos dos eventos em json: 
 
[{"msg":"Inicio dos eventos","processing_time":0},{"msg":"Iteração: 0","processing_time":"0.00044894"},{"msg":"Iteração: 1","processing_time":"0.00009203"},{"msg":"Iteração: 2","processing_time":"0.00007010"},...]

Tempo de execução em laço for pelo método getTotals():  
Processado em: 30.0108 segundos.  

Tempo de execução em laço for pelo método calc():  
30,0108 

Consumo de memória: 
48,06 Kb

有 30 次迭代,每次迭代睡眠 1 秒,随机生成。 请谨慎使用

分析应用内存使用情况

  1. 启动内存计数器
    使用静态方法 MemoryUse::create(),实例化到您想要操作的变量中,这里命名为 $memoryUse
  2. 捕获总计
    内存使用总量可以通过方法 calc()calcKb(int <precision>)calcMb(int <precision>) 返回。
    分别返回字节、千字节和兆字节值,建议使用第一个进行保存,其他用于屏幕显示,精度(小数点后的零)根据参数按需更改。
<?php

use Bahge\AnalisysTools\Domain\MemoryUse;

require '../vendor/autoload.php';

$memoryUse = MemoryUse::create();

$array = [];
// 1024 iterações 
for ($i=0; $i < (2 ** 10); $i++) { 
    array_push($array, $i);
}


echo implode(",", $array) . PHP_EOL;
echo $memoryUse->calcKb() . PHP_EOL;

返回示例
0,1,2,3,4,5 ... 1023

calcKb() 内存消耗
36.12 Kb

执行时间:处理时间为:0.0009 秒