Classe Benchmarking
O Code Igniter tem uma classe de Benchmarking que está sempre ativa, permitindo verificar a diferença de tempo entre dois pontos marcados para serem calculados.
Nota: Esta classe é inicializada automaticamente pelo sistema, então não é necessário fazer isto manualmente.
O benchmark sempre é iniciado no momento em que o framework é carregado, e terminado pela classe de saída (output), assim que é enviada a visualização para o navegador, permitindo uma eficiente verificação e exibição de tempo de execução de todo o sistema.
Conteúdo
- Usando a classe de Benchmark
- Marcas de Benchmark na classe de Profile
- Exibindo o Tempo Total de Execução
- Exibindo o Consumo de Memória
Usando a classe de Benchmark
A classe de Benchmark pode ser utilizada com seus controllers, views, ou seus Models. O processo de uso é:
- Marcar um ponto inicial
- Marcar um ponto final
- Chamar a função de "tempo decorrido" (elapsed_time) para visualizar os resultados
Segue aqui um exemplo real de uso:
$this->benchmark->mark('code_start');
// Algum codigo e executado aqui
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
Nota: As palavras "code_start" e "code_end" podem ser quaisquer palavras. Eles são apenas palavras para referenciar as duas marcas. Voce pode usar quaisquer palavras, opu ainda usar multiplas marcas. Veja este exemplo:
$this->benchmark->mark('cao');
// Algum codigo aqui
$this->benchmark->mark('gato');
// Mais codigo aqui
$this->benchmark->mark('rato');
echo $this->benchmark->elapsed_time('cao', 'gato');
echo $this->benchmark->elapsed_time('gato', 'rato');
echo $this->benchmark->elapsed_time('cao', 'rato');
Marcas de Benchmark na classe de Profile
Se você quer que os dados do benchmark estejam disponíveis na classe Profiler, suas marcas devem ser deinidas em par, e cada marca precisa ter o sufixo _start e _end. Cada par de marcas precisam ser nomeadas de forma identica. Por exemplo:
$this->benchmark->mark('marca_start');
// Algum codigo aqui...
$this->benchmark->mark('marca_end');
$this->benchmark->mark('outra_marca_start');
// Mais codigo aqui...
$this->benchmark->mark('outra_marca_end');
Para mais informações leia a página de Profiler.
Exibindo o Tempo Total de Execução
Se você pretende exibir o tempo total do moment em que o Code Igniter iniciou até o momento em que a saída é enviada
ao navegador, coloque este código no template da sua view:
<?=$this->benchmark->elapsed_time();?>
Você pode perceber que esta é a mesma função utilizada nos exemplos acima para calcular o tempo entre duas marcas, exceto
pelo fato de que você não passou nenhum parametro. Quando os parametros são enviados, o Code Igniter não
para de calcular até o momento que a saída é enviada ao navegador. Não importa onde você chame a função, o tempo continuará
a rodar até o final.
Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualização é usando esta pseudo-variável, caso
você preferir não usar o PHP:
{elapsed_time}
Nota: Se você quiser verificar qualquer coisa em seus controllers, você precisará definir
suas próprias marcas de início e fim.
Exibindo o Consumo de Memória
Se sua instalação do PHP foi configurada com o parametro --enable-memory-limit, você pode exibir a quantidade de memória
consumida pelo sistema usando o seguinte código em seus arquivos de visualização:
<?=$this->benchmark->memory_usage();?>
Nota: Esta função só pode ser usada em arquivos de visualização. O consumo será referente ao consumo total de memória usado por toda a aplicação.
Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualização é usando esta pseudo-variável, caso
você preferir não usar o PHP:
{memory_usage}