Estoy realizando una tonelada de cálculos de distancia en mi código, hasta el punto en que Math.sqrt(a*a + b*b) se ejecuta cientos de miles de veces.
Luego recordé cómo hay una función Math.hypot que hace exactamente esto. Sin embargo, en todas las pruebas que he hecho, parece significativamente más lento que hacer Math.sqrt . Por ejemplo, si ejecuta el siguiente código:
var i, tmp, x = 55, y = 66, end, ini = performance.now(); // Math.sqrt operation i = 0; ini = performance.now(); tmp = 0; while(i++ < 2000000){ tmp += Math.sqrt(x*x + y*y) } end = performance.now(); console.log(tmp, "Math.sqrt operation: " + (end - ini) + " ms"); // Math.hypot i = 0; ini = performance.now(); tmp = 0; while(i++ < 2000000){ tmp += Math.hypot(x, y) } end = performance.now(); console.log(tmp, "Math.hypot: " + (end - ini) + " ms"); En mi computadora, la función hypot es 5 veces más lenta. Y también probé un sitio de evaluación comparativa y allí fue 25 veces más lento.
¿Qué está causando que la función hypot sea tan lenta? ¿No debería usarse en absoluto para los cálculos de distancia crítica de rendimiento, o estoy haciendo algo mal?