Code Igniter Versão 1.5.2 - Guia do Usuário


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

A classe de Benchmark pode ser utilizada com seus controllers, views, ou seus Models. O processo de uso é:

  1. Marcar um ponto inicial
  2. Marcar um ponto final
  3. 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}