Benchmarking: calculando o tempo de execução e consumo de memória

Benchmarking: calculando o tempo de execução e consumo de memória

O CodeIgniter possui uma biblioteca que permite calcular o tempo de execução das tarefas entre 2 pontos pré-determinados, e também o consumo de memória. Essa biblioteca é chamada de Benchmarking, e já vem ativada por padrão.

Através dos recursos dessa biblioteca, com poucas linhas de código é possível obter o tempo de execução das tarefas entre 2 pontos determinados. Por exemplo:


$this->benchmark->mark('ponto_inicial');
... tarefas ...
$this->benchmark->mark('ponto_final');

Para obter o tempo decorrido durante o processamento das tarefas entre esses 2 pontos, basta utilizar o código abaixo:


$this->benchmark->elapsed_time('ponto_inicial','ponto_final');

“ponto_inicial” e “ponto_final” são apenas termos ilustrativos, você pode utilizar qualquer termo para identificar esses pontos.

Vamos imaginar uma situação onde existem 3 pontos para controle do tempo de execução:


$this->benchmark->mark('ponto');

... tarefas ...

$this->benchmark->mark('ponto_2');

... tarefas ...

$this->benchmark->mark('ponto_3');

Com 3 pontos para controle, é possível obter o tempo decorrido com 3 combinações diferentes:


$this->benchmark->elapsed_time('ponto', 'ponto_2');
$this->benchmark->elapsed_time('ponto_2', 'ponto_3');
$this->benchmark->elapsed_time('ponto', 'ponto_3');

[/php

Para exibir o tempo de execução retornado por <strong>$this->benchmark->elapsed_time()</strong>, você pode simplesmente passar o valor para uma variável, ou então dar um echo no método.



$tempo_decorrido = $this->benchmark->elapsed_time('ponto', 'ponto_2');
echo $this->benchmark->elapsed_time('ponto', 'ponto_2');

Caso você queira obter o tempo total de execução, basta não informar os pontos de verificação:


$this->benchmark->elapsed_time();

O método $this->benchmark->elapsed_time() aceita um terceiro parâmetro, que deve ser um número inteiro, e vai determinar o número de casas decimais que deve ser utilizado para definir a precisão do valor retornado.

Verificando o consumo de memória

O consumo de memória só pode ser utilizado na view, pois ele reflete o consumo de memória de todas as tarefas da aplicação, até o momento em que acaba de renderizar a view. Sendo assim, para poder exibí-lo você pode utilizar a pseudo-variável {{memory_usage}}, diretamente na view.

Até a próxima!