Итак, я программирую 2d Javascript физическое моделирование. Производительность хорошая, но я собираюсь сделать оптимизацию, чтобы сделать ее лучше. Поэтому, поскольку программа работает с большой физической геометрией, я делаю несколько расчетов Пифагорейской теоремы в программе. Всего около пяти расчетов; вместе они работают около миллиона раз в секунду. Итак, я полагал, что это повысит производительность, если я вложу этот простой код теоремы Пифагора в новую функцию и назвал ее; в конце концов, таким образом, браузер имеет меньше возможностей для компиляции. Итак, я запустил код в Firefox и получил.... 4000000% увеличения времени выполнения этого расчета.
Как? Это тот же код: Math.sqrt(x * x + y * y), так как добавление его как функции замедляет его? Я предполагаю, что причина в том, что функция требует времени для вызова без выполнения кода и добавления того, что миллион этих задержек в секунду замедляет его?
Это выглядит довольно тревожным для меня. Будет ли это также применяться к предопределенным js-функциям? Кажется маловероятным, и если да, то как им избежать?
Код, используемый для этого:
function x()
{
dx=nx-mx;
dy=ny-my;
d=Math.sqrt(dx*dx+dy*dy);
doStuff(...
}
Я пробовал это:
function x()
{
dx=nx-mx;
dy=ny-my;
d=hypo(dx,dy);
doStuff(...
}
function hypo(x,y)
{
return Math.sqrt(x*x+y*y);
}
Спасибо!