Na publicação anterior eu mostrei algumas dicas, para você melhorar o desempenho da sua aplicação PHP. Porém não mostrei como você pode calcular o tempo de execução dos seus scripts.

Isto as vezes é uma dúvida bem comum entre desenvolvedores iniciantes, porém é algo extremamente simples de ser feito.

<?php
// Iniciamos o "contador"
list($usec, $sec) = explode(' ', microtime());
$script_start = (float) $sec + (float) $usec;

/* SEU CÓDIGO PHP */

// Terminamos o "contador" e exibimos
list($usec, $sec) = explode(' ', microtime());
$script_end = (float) $sec + (float) $usec;
$elapsed_time = round($script_end - $script_start, 5);
// Exibimos uma mensagem
echo 'Elapsed time: ', $elapsed_time, ' secs. Memory usage: ', round(((memory_get_peak_usage(true) / 1024) / 1024), 2), 'Mb';

Eu particularmente possuo uma classe, que faz um controle mais complexo do calculo de tempo de execução, e está diretamente ligada a uma classe de registro de log, desta forma quando alguma execução ultrapassa um tempo pré-definido como “limite máximo” ele registra uma entrada no log, como um “aviso”, desta forma posso encontrar possíveis gargalos em meus sistemas.

Fonte: http://www.tonymarston.net/php-mysql/elapsed-time.html

UPDATED: Adicionei o consumo de memória do script, e corrigi o formato do echo.

  • http://twitter.com/iamBrunOS Bruno Silva Oliveira
    Muito bom!!! estou tesando um algorimo que estou criando… e esse codigo era o que eu precisava para medir o desempenho. Obg!
  • Torjax
    Como é bom quando funciona de primeira. Parabéns e muito obrigado!
  • José Monteiro
    vlw brigadão XD
  • adriano avelino
    O consumo de memória excedido causa perda de sessão ou logoff em um sistema desenvolvido com php?
    • Ricardo Lüders
      Se não me falha a memória, se causar memory leak, sim, pode ocasionar em perda de sessão.
      • adriano avelino
        Estou com esse problema quando é realizado o downlod de arquivos sem pausa (um arquivo na sequencia do outro) e acaba ocorrendo a perda de sessão e o logoff do sistema, mas o mesmo não ocorre quando o download é realizado de forma mais cadenciada. Isso pode ser um problema com memória ou configuração do apache/php?
        • Ricardo Lüders
          Compensa você monitorar para ver onde está o problema. Pode ser que sua sessão esteja expirando muito rapidamente. Recomendo que você instale o xdebug, habilite todos os logs do php/apache e realize alguns testes de estresse.
          • adriano avelino
            Valeu pelas dicas, estarei verificando!