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