2015-01-06 4 views
1

Если приложение-браузер выполняет более интенсивные или блокирующие операции, то цикл событий будет удлиняться.Обнаружение цикла событий «лаг»

Есть ли способ получить качественный метрики относительно длины цикла событий?

Это делается для того, чтобы оценить, как «легко» клиентское веб-приложение выполняет рендеринг на клиенте (т. Е. Имеет ли он достаточные вычислительные ресурсы для обеспечения плавного, своевременного опыта).

ответ

0

Вы можете подключить window.requestAnimationFrame (без фактического выполнения рендеринга) и измерить среднее время между вызовами на основе значения таймера высокого разрешения, переданного его обратному вызову.

Это фактически будет счетчик FPS.

+0

Таким образом, это сработает, потому что обратный вызов, предоставленный для запроса кадра анимации, гарантированно будет вызываться непосредственно перед завершением отметки? Можете ли вы объяснить, почему это работает? – Ben

+0

AIUI, вы не будете получать вызовы к обратному вызову более часто, чем частота обновления экрана, но если текущий кадр был «пропущен» (поскольку цикл событий был занят обработкой другого кода), тогда будет и обратный вызов. – Alnitak

+0

О, а в новых браузерах есть также 'setImmediate', который AFAIK заставит вызываемый вызов быть вызванным как ASAP, но из цикла событий. – Alnitak