O Cronômetro

Qual a precisão de um cronômetro online?

O relógio do navegador mede intervalos com resolução entre 5 microssegundos e 1 milissegundo, conforme o navegador. O limite real está em outro lugar: a tela de 60 Hz mostra um quadro a cada 16,7 ms e o tempo de reação humana fica perto de 200 ms. Na prática, o erro de quem aperta o botão domina.

Como um cronômetro no navegador mede o tempo?

Um cronômetro online bem feito lê o relógio de alta resolução do navegador, performance.now(), em vez de contar tiques. Essa função, definida na especificação High Resolution Time do W3C, devolve milissegundos com casas decimais desde o carregamento da página. O relógio por trás dela é monotônico: segundo o W3C, ele nunca anda para trás e não muda quando alguém ajusta o relógio do sistema.

Isso o separa de Date.now(), que acompanha a hora do sistema. A MDN lembra que Date.now() pode saltar com ajustes manuais ou automáticos do relógio e tem resolução de 1 ms. Para medir intervalos, performance.now() é a escolha certa; para saber que horas são, vale a hora do sistema ou uma referência como a hora certa.

Por que o navegador arredonda o tempo?

Por segurança. Medidas de tempo finas demais permitem ataques de temporização e a identificação do aparelho, então a especificação manda “engrossar” o relógio: 100 microssegundos por padrão e 5 microssegundos em páginas com isolamento entre origens. A especificação trata esses valores como mínimos, e os navegadores podem arredondar ainda mais: o Firefox, por exemplo, arredonda seus relógios para 1 ms por padrão, segundo a documentação da MDN.

Mesmo no pior caso, 1 ms é 200 vezes menor que o tempo de reação de uma pessoa. O arredondamento do navegador não é o gargalo de um cronômetro operado à mão.

A tela mostra todos os milissegundos?

Não. A tela só se redesenha a cada quadro, e requestAnimationFrame acompanha a taxa de atualização do monitor, de acordo com a MDN. Num monitor de 60 Hz, o intervalo entre quadros é de 16,7 ms, mas O Cronômetro desenha no máximo 30 quadros por segundo, então o último dígito em milésimos avança de cerca de 33 em 33 ms, em qualquer monitor.

Taxa de atualização Intervalo entre quadros O que aparece nos milésimos
30 quadros por segundo 33,3 ms saltos de cerca de 33 ms
60 Hz, a maioria das telas 16,7 ms saltos de 16 a 17 ms
90 Hz 11,1 ms saltos de 11 ms
120 Hz 8,3 ms saltos de 8 ms
144 Hz 6,9 ms saltos de 7 ms

O Cronômetro limita o desenho a 30 quadros por segundo quando mostra milésimos, o que poupa bateria sem afetar a medida. O tempo de uma volta vem do instante exato em que você aperta L ou Espaço, lido por performance.now(), e não do quadro que estava na tela naquele momento.

Quanto erra quem cronometra à mão?

Em geral, perto de 0,2 segundo. O estudo de Jain e colegas, publicado em 2015 no International Journal of Applied and Basic Medical Research, cita médias de 180 a 200 ms para reagir a estímulos visuais e de 140 a 160 ms para sons. Na largada, você reage depois do sinal; na chegada, tende a antecipar o toque ao ver o corredor se aproximar. Os dois erros não se cancelam com exatidão.

O atletismo oficial trata o assunto com regras. Pelas Regras Técnicas da World Athletics, a cronometragem manual usa três cronometristas, que disparam pelo clarão ou pela fumaça do tiro, e não pelo som. Faz sentido: o som viaja a cerca de 343 metros por segundo e levaria quase 0,3 s para cruzar 100 m. Em provas de pista, o tempo manual é arredondado para o décimo seguinte, então 10,11 s vira 10,2 s.

Na prática, um cronômetro operado à mão é confiável no décimo de segundo. Os milésimos servem para comparar voltas medidas do mesmo jeito, não para decidir uma chegada apertada.

O cronômetro atrasa com a aba em segundo plano?

O valor medido não atrasa; só a tela deixa de ser atualizada. Segundo o blog Chrome for Developers, o Chrome checa os timers de uma aba escondida uma vez por segundo e, depois de 5 minutos escondida e em silêncio, uma vez por minuto. E requestAnimationFrame fica pausado em abas ocultas.

Um cronômetro que soma “+10 ms a cada tique” sofre com isso: se cada tique de 10 ms chegar 1 ms atrasado, o contador perde 1 segundo a cada 11. O Cronômetro não soma tiques. Ele guarda o instante de início e o de parada de cada trecho, ambos lidos com performance.now(), e calcula o total pela diferença. O laço de desenho apenas lê esse valor, então, quando você volta para a aba, o total já está certo.

E se o computador entrar em suspensão?

Depende do sistema. A especificação pede que performance.now() continue contando durante a suspensão, mas a MDN registra que, na prática, só navegadores no Windows fazem isso. O motor de tempo do O Cronômetro compara a hora do sistema com o relógio monotônico a cada segundo e detecta saltos acima de 2 segundos, sinal de suspensão ou de ajuste do relógio. Quando a hora do sistema salta para a frente, o cronômetro soma o tempo dormindo ao total; quando ela volta para trás, vale o relógio monotônico.

A regra mais segura continua simples: em medições longas, mantenha o aparelho acordado, ligue o notebook na tomada e desative a suspensão automática. Fechar a aba é outro caso. O estado fica guardado no aparelho e, ao reabrir, o tempo é reconstruído com a hora do sistema; se o relógio do sistema for ajustado nesse intervalo, o total reflete o ajuste.

Como conferir a precisão do seu cronômetro?

Um teste caseiro leva 10 minutos:

  1. Abra a hora certa ao lado do cronômetro online e inicie a contagem na virada de um minuto.
  2. Deixe correr 10 minutos sem tocar em nada.
  3. Pare na virada do décimo minuto e compare.

A diferença deve ficar na casa dos décimos de segundo, que é basicamente o seu tempo de reação na largada e na parada. Se passar de 1 segundo, repita com o aparelho na tomada e a tela acesa. Para comparar voltas entre si com o mesmo erro humano, veja como usar o cronômetro com voltas no treino.

Perguntas frequentes

O cronômetro online é mais preciso que o do celular?

Os dois usam o relógio do aparelho e medem com resolução de milissegundo ou melhor. A diferença real vem de quem aperta o botão, com reação perto de 0,2 segundo.

Por que o último dígito pula de vários em vários milésimos?

Porque a tela só se redesenha a cada quadro, e O Cronômetro desenha no máximo 30 quadros por segundo: com milésimos na tela, o último dígito avança de cerca de 33 em 33 ms. A volta registrada usa o instante exato do toque, não o quadro exibido.

Posso usar um cronômetro online numa competição oficial?

Para resultado oficial, não. A World Athletics define regras próprias para cronometragem manual e automática; o cronômetro online serve para treino e controle.

O tempo continua certo se eu trocar de aba?

Sim. O Cronômetro calcula o total pela diferença entre os instantes de início e de parada, então a aba em segundo plano não acumula atraso.

O que acontece se eu fechar a aba com o cronômetro correndo?

O estado fica guardado no aparelho. Ao reabrir, o tempo é reconstruído com a hora do sistema e a contagem continua de onde estava.

Fontes

  1. W3C: High Resolution Time w3.org
  2. MDN: Performance.now() developer.mozilla.org
  3. MDN: Date.now() e a precisão reduzida no Firefox developer.mozilla.org
  4. MDN: Window.requestAnimationFrame() developer.mozilla.org
  5. Chrome for Developers: limitação de timers no Chrome 88 developer.chrome.com
  6. Jain et al. (2015), tempos de reação visual e auditivo, Int J Appl Basic Med Res pmc.ncbi.nlm.nih.gov
  7. World Athletics: Regras Técnicas (Livro C2.1), regra 19, cronometragem worldathletics.org

Atalhos de teclado

Desligados, Espaço, Enter e Esc continuam valendo.

Cronômetro e timer

Espaço
Iniciar ou pausar
L
Marcar uma volta (cronômetro)
R
Zerar
Ctrl+Z
Desfazer o Zerar do cronômetro (por 6 s)

Despertador

Enter
Ativar o alarme
Espaço
Parar o alarme que está tocando
S
Soneca

Em qualquer página

F
Tela cheia
T
Trocar o tema: claro, escuro ou OLED
?
Mostrar estes atalhos
Esc
Fechar janela ou sair da tela cheia