Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
Javascript: ¿por qué la medición del tiempo se vuelve imprecisa en una función de iteración?

Considere esta pieza de código

 // Initialise the variables to check when the code started let total_time = performance.now(); let recursions = 0; function test() { recursions++; if (recursions === 60) { // Check how long it took to do 60 recursions console.log(`${performance.now() - total_time}ms`); } // Timeout to call it 17ms later setTimeout(() => test(), 17); } test();

Esto está destinado a mostrar cuándo han ocurrido 60 recursiones para garantizar que ciertas partes de mi código se activen correctamente (sin necesidad de establecer el tiempo de espera ya que está bloqueando) y obtengo entre 1200 y 1600 ms sin ningún motivo. Utilicé una versión modificada que medía el tiempo que tardaba y daba 0ms (sin ningún motivo). ¿Alguien sabe por qué? ¿Y pasará lo mismo en node.js?

Código usado para medir cuánto tiempo se tardó en hacer una recursión

 let start_time = performance.now(); let total_time = performance.now(); let measure = 0; function test() { start_time = performance.now(); measure++; if (measure === 60) { console.log(`${performance.now() - total_time}ms`); } console.log(`Taken ${performance.now() - start_time}`); } test();
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No se supone que sea tan preciso como cabría esperar, ya que el tiempo de espera puede activar un evento más tarde cuando la página está ocupada con otras tareas.

setTimeout se implementa de una manera que debe ejecutarse después de un retraso mínimo dado, y una vez que el hilo del navegador está libre para ejecutarlo. entonces, por ejemplo, si especifica un valor de 0 para el parámetro de retraso y cree que se ejecutará "inmediatamente", no lo hará. se ejecutará, con mayor precisión, en el próximo ciclo de eventos (que es parte del ciclo de eventos, modelo de concurrencia que es responsable de ejecutar el código).

Entonces, para concluir, no puede usar setTimeout si espera un tiempo consistente, confiable y preciso en una escala de milisegundos.

Lea el motivo de los retrasos más largos de lo especificado: https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#reasons_for_delays_longer_than_specified

Más información sobre el bucle de eventos de JS: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda