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:
- Abra a hora certa ao lado do cronômetro online e inicie a contagem na virada de um minuto.
- Deixe correr 10 minutos sem tocar em nada.
- 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
- W3C: High Resolution Time w3.org
- MDN: Performance.now() developer.mozilla.org
- MDN: Date.now() e a precisão reduzida no Firefox developer.mozilla.org
- MDN: Window.requestAnimationFrame() developer.mozilla.org
- Chrome for Developers: limitação de timers no Chrome 88 developer.chrome.com
- Jain et al. (2015), tempos de reação visual e auditivo, Int J Appl Basic Med Res pmc.ncbi.nlm.nih.gov
- World Athletics: Regras Técnicas (Livro C2.1), regra 19, cronometragem worldathletics.org