W3docs

microtime()

A função PHP microtime() retorna o tempo atual em segundos desde a época Unix com precisão de microssegundos, ideal para medir o desempenho do código.

Introdução

Quando se trata de desenvolvimento web, o tempo é fundamental. A função PHP microtime() é uma ferramenta poderosa que os desenvolvedores usam para medir o desempenho do seu código. Esta função retorna o tempo atual em segundos desde a época Unix com precisão de microssegundos, tornando-se uma forma confiável de medir o tempo decorrido entre dois pontos no seu código. Neste artigo, vamos aprofundar as particularidades desta função e mostrar como usá-la para melhorar o desempenho das suas aplicações web.

O que é microtime()?

A função microtime() retorna o tempo atual em segundos desde a época Unix (1 de janeiro de 1970, 00:00:00 UTC) com precisão de microssegundos. A função padrão time() fornece apenas segundos inteiros, portanto quando você precisa medir algo que termina em uma fração de segundo — como uma consulta ao banco de dados ou um loop — microtime() é o que você utiliza.

Por padrão, microtime() retorna uma string no formato "msec sec" — uma parte fracionária (os microssegundos como decimal) seguida de um espaço e o timestamp Unix em segundos inteiros:

echo microtime();
// Output: "0.45678900 1698765432"
//          ^ fraction   ^ whole seconds

Ler essa string é inconveniente, então na prática você quase sempre passa true para obter um único número de ponto flutuante com o qual pode fazer aritmética diretamente:

echo microtime(true);
// Output: 1698765432.456789

Sintaxe

microtime(bool $get_as_float = false): string|float

Disponível desde PHP 4.0.0. A função aceita um parâmetro boolean opcional:

  • $get_as_float — quando true, retorna um float da forma seconds.microseconds. Quando false (o padrão), retorna a string "msec sec" descrita acima.

Se você precisar do timestamp a partir da forma de string padrão, divida-o no espaço e some as duas partes:

[$micro, $sec] = explode(' ', microtime());
$timestamp = (float) $sec + (float) $micro; // same as microtime(true)

Uso

O principal uso de microtime() é o benchmarking: registre microtime(true) antes de um bloco de código, registre novamente depois e subtraia. A diferença é o tempo decorrido em segundos. Isso permite comparar duas abordagens, encontrar pontos lentos e verificar se uma otimização realmente ajudou.

Um segundo uso comum é a criação de identificadores baseados em timestamp. O valor float muda em cada chamada, então você pode incorporá-lo em um ID. Esteja ciente, porém, de que duas chamadas no mesmo microssegundo retornam o mesmo valor, e os floats armazenam apenas ~15 dígitos significativos — portanto microtime() sozinho não é à prova de colisões. Para IDs verdadeiramente únicos, use a função dedicada uniqid() (que já incorpora microtime), opcionalmente com uniqid('', true) para entropia adicional.

microtime() vs hrtime()

microtime() reporta o relógio do sistema, que pode recuar (ajustes de NTP, mudanças de horário de verão) e produzir uma medição negativa ou distorcida. Para medições de duração pura no PHP 7.3+, prefira hrtime(): ele usa um timer monotônico de alta resolução que nunca retrocede e retorna nanossegundos. Use microtime() quando precisar de um ponto real no tempo vinculado à época Unix; use hrtime() quando se importar apenas com quanto tempo algo levou.

Exemplos

Medindo o tempo de execução do script

O padrão clássico: capture o início, execute seu código, capture o fim, subtraia.

php— editable, runs on the server

Este exemplo mede o tempo que um bloco de código leva e exibe o resultado em segundos.

Benchmarking de trabalho real

Para obter um número que você possa realmente ler e comparar, execute a operação muitas vezes e formate o resultado. Aqui medimos 100.000 concatenações de strings e imprimimos o tempo decorrido em milissegundos:

<?php

$start = microtime(true);

$result = '';
for ($i = 0; $i < 100000; $i++) {
    $result .= 'x';
}

$elapsed_ms = (microtime(true) - $start) * 1000;

echo "Built a " . strlen($result) . "-char string in "
     . number_format($elapsed_ms, 2) . " ms";
// Example output: Built a 100000-char string in 4.31 ms

number_format() arredonda o float para duas casas decimais para que a saída fique organizada. Consulte number_format() para as opções completas de formatação.

Um identificador baseado em timestamp

Você pode derivar um ID do float, mas faça um hash (ou use-o como semente) em vez de expor o valor bruto:

php— editable, runs on the server

Misturar random_int() elimina o risco de dois IDs colidirem quando gerados no mesmo microssegundo. Para a maioria das aplicações, a função integrada uniqid() é a escolha mais simples e específica para este fim.

Conclusão

A função microtime() é uma ferramenta essencial para medir o tempo decorrido em PHP. Capture-a antes e depois de um bloco de código, subtraia e você terá uma duração precisa. Lembre-se apenas que ela rastreia o relógio do sistema — para medições de duração pura no PHP 7.3+, use hrtime(), e para timestamps em segundos inteiros use time().

Prática

Prática
Qual é a função do microtime() em PHP?
Qual é a função do microtime() em PHP?
Was this page helpful?