Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

165
Vistas
¿Alguna forma de obligar a los motores js a desenrollar un bucle?

Tengo un contenedor de cola crítico para el rendimiento que hace muchas inserciones/eliminaciones aleatorias. En mi clase de contenedor, tengo un Uint32Array de tamaño fijo llamado actualizaciones y en mi lógica de inserción, necesito comparar un valor con cada valor en esta matriz de actualización.

Originalmente, lo hice simplemente así:

 const u = this.updates; for (let i = 0; i < u.length; i++) bucket_offset += bi >= u[i];

Luego, justo cuando estaba dando los toques finales al contenedor y solo estaba atornillando, intenté desenrollar dicho lazo.

 const u = this.updates; bucket_offset += (bi >= u[0]) + (bi >= u[1]) + (bi >= u[2]) + (bi >= u[3]) + (bi >= u[4]) + (bi >= u[5]) + (bi >= u[6]) + (bi >= u[7]) + (bi >= u[8]) + (bi >= u[9]) + (bi >= u[10]) + (bi >= u[11]) + (bi >= u[12]) + (bi >= u[13]) + (bi >= u[14]) + (bi >= u[15]);

Y resulta que esto es alrededor de 10 veces más rápido en Chrome, lo que hace que todo el inserto sea un 30 % más rápido.

Después de esa revelación, estoy buscando una manera de hacer que la VM comprenda que está bien desenrollar ese ciclo, después de todo, this.updates.length es una constante.

Al final del día, puede permanecer como está, pero preferiría un bucle, ya que se vería mejor. ¿Algunas ideas?

Mi objetivo principal es el navegador Chrome que se ejecuta en V8.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda