Есть ли альтернатива в JavaScript для получения времени в миллисекундах с использованием объекта даты или, по крайней мере, для повторного использования этого объекта, без необходимости создавать экземпляр нового объекта каждый раз, когда мне нужно получить это значение? Я спрашиваю об этом, потому что я пытаюсь сделать простой движок игры в JavaScript, и при расчете "времени дельта-кадра" мне нужно создать новый объект Date каждый кадр. Хотя я не беспокоюсь о последствиях этого, у меня возникают некоторые проблемы с надежностью точного времени, возвращаемого этим объектом.
Я получаю некоторые странные "прыжки" в анимации каждую секунду или около того, и я не уверен, связано ли это с сборкой мусора JavaScript или ограничением объекта Date при его обновлении так быстро. Если я установил значение дельта для некоторой константы, тогда анимация будет идеально гладкой, поэтому я уверен, что этот "прыжок" связан с тем, как я получаю время.
Единственным подходящим кодом, который я могу дать, является способ вычисления дельта-времени:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
При вычислении движения/анимации я умножаю постоянное значение с дельта-временем.
Если нет способа избежать получения времени в миллисекундах с помощью объекта Date, будет ли функция, которая увеличивает значение переменной (это истекшее время в миллисекундах с начала игры) и вызывается с помощью функции SetTimer в ставка один раз в миллисекунды является эффективной и надежной альтернативой?
Изменить: я сейчас тестировал свой код в разных браузерах, и кажется, что этот "прыжок" действительно проявляется только в Chrome, а не в Firefox. Но было бы неплохо, если бы был метод, который работал в обоих браузерах.