Por lo tanto, estoy programando una simulación de física Javascript 2d. El rendimiento es bueno, pero estoy haciendo optimizaciones para mejorarlo. Entonces, como el programa funciona con mucha geometría física, hago varios cálculos del Teorema de Pitágoras en el programa. En total, alrededor de cinco cálculos; juntos, corren alrededor de un millón de veces por segundo. Entonces, pensé que aumentaría el rendimiento si puse ese simple código del teorema de Pitágoras en una nueva función y lo llamé; después de todo, de esa manera el navegador tiene menos compilación para hacer. Entonces, ejecuté el código en Firefox y obtuve .... 4000000% aumento en el tiempo de ejecución de ese cálculo.JS: ¿Cuánto tiempo se tarda en llamar a una función?
¿Cómo? Es el mismo código: Math.sqrt (x * x + y * y), entonces, ¿cómo lo hace más lento agregarlo como función? Supongo que la razón es que una función requiere tiempo para ser llamada, sin ejecutar el código, y ¿agregar que un millón de estas demoras por segundo lo ralentiza?
Eso me parece bastante alarmante. ¿Esto también se aplicaría a las funciones js predefinidas? Parece poco probable, y si es así, ¿cómo lo evitan?
El código utilizado para algo así:
function x()
{
dx=nx-mx;
dy=ny-my;
d=Math.sqrt(dx*dx+dy*dy);
doStuff(...
}
lo que intentaba era la siguiente:
function x()
{
dx=nx-mx;
dy=ny-my;
d=hypo(dx,dy);
doStuff(...
}
function hypo(x,y)
{
return Math.sqrt(x*x+y*y);
}
Gracias!
¿Su función está definida fuera del alcance que se ejecuta un millón de veces por segundo? – alex
Y no es cierto que el navegador tenga "menos compilación para hacer" porque lo pones en una función ... debería ser más o menos lo mismo, en realidad, sobre todo porque la compilación es una cuestión de inicio. Pero @alex probablemente obtuvo el motivo de tu 400% de ralentización :) – Ryan
@alex Sí, está definido en la ventana principal. – mindoftea