Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
21 / 21
Benchmark
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
8
100.00% covered (success)
100.00%
21 / 21
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 reset
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 getMicroTime
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getTime
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
13 / 13
 getMemory
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
namespace Win\Services;
/**
 * Contador de Desempenho
 *
 * Usado para analisar desempenho de códigos
 *
 * <code>
 * $b = new Benchmark();
 * [code here]
 * echo $b->getTime();
 * </code>
 */
class Benchmark
{
    private int $startTime;
    private int $memory;
    /**
     * Inicia a contagem de tempo
     */
    public function __construct()
    {
        $this->startTime = microtime(true);
        $this->memory = memory_get_usage();
    }
    /**
     * Reinicia a contagem de tempo
     */
    public function reset()
    {
        $this->startTime = microtime(true);
        $this->memory = memory_get_usage();
    }
    /**
     * Retorna o tempo gasto (em microssegundos)
     * @return float
     */
    private function getMicroTime()
    {
        return microtime(true) - $this->startTime;
    }
    /**
     * Retorna o tempo gasto (na unidade correta)
     * @return string
     */
    public function getTime()
    {
        $sec = $this->getMicroTime();
        $day = floor($sec / 86400);
        $sec -= $day * 86400;
        $hour = floor($sec / 3600);
        $sec -= $hour * 3600;
        $minute = floor($sec / 60);
        $sec -= $minute * 60;
        $microSec = ($sec - floor($sec)) * 1000;
        return
                (empty($day) ? '' : $day . 'd ') .
                (empty($hour) ? '' : $hour . 'h ') .
                (empty($minute) ? '' : $minute . 'm ') .
                floor($sec) . 's ' .
                $microSec . 'ms';
    }
    /**
     * Retorna a quantidade de memória gasta
     * @return int
     */
    public function getMemory()
    {
        return (memory_get_usage() - $this->memory) / (1024 * 1024);
    }
}