Получить текущее время из существующего JavaScript-объекта Date ()? - PullRequest
4 голосов
/ 02 декабря 2011

Я пишу некоторый отладочный код в приложении JavaScript в реальном времени.В цикле обновления я хочу:

  1. получить текущее время в миллисекундах
  2. сравнить со временем последнего кадра и распечатать частоту кадров
  3. установить время последнего кадра в текущее время из переменной выше

Все просто, за исключением того, что, поскольку он находится в таком критичном для производительности фрагменте кода, я стараюсь не вызывать

var d=new Date();

каждый кадр, прежде чем я вызову

thisFrameTime = d.getTime();

Возможно ли это?Есть ли что-то вроде:

d.now

, которое обновляет время в существующем объекте даты?

Я думаю, что я хочу держаться подальше от выделения памяти / gc во время отладкирежим, поэтому он меньше влияет на частоту кадров - но, может быть, это не так, как это делается в JavaScript?(У меня больше опыта работы с C / C ++, так что, возможно, это неправильное мышление для JS?)

Я искал в Google и Stack Overflow и не могу найти ответ, который заставляет менядумаю, что это невозможно.Если это так, то подтверждение будет полезно.

Буду рад любым мыслям - какой самый эффективный способ сделать это?

Ответы [ 2 ]

4 голосов
/ 03 декабря 2011

Существует функция Date.now () .

var time = Date.now()

Проблема в том, что она является частью EcmaScript 5, поэтому старый браузер (IE 6-8) не делаетне могу это поддержать.Как написано на MDM (ссылка выше), вы можете решить эту проблему, включив это в свой код:

if (!Date.now) {  
  Date.now = function() {  
    return +(new Date);  
  };  
}  
1 голос
/ 03 декабря 2011

Вы не управляете gc в браузере, он запускается при запуске.Создание объектов Date каждый раз, когда вам нужно текущее время, вероятно, является наилучшим способом сделать это и должно быть тривиальным, если только вы не держите ссылки на объекты (что не позволит им собираться).

Однако вам следуетвероятно, используйте код профилирования в стиле AOP вместо «отладочного кода» в исходном коде.Я даже не уверен, что это такое, но звучит так, как будто ты никогда не должен делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...