Как точно измерить частоту кадров браузера (FPS) в HTML5? - PullRequest
14 голосов
/ 24 марта 2011

Каков наиболее точный способ измерения частоты кадров, т. Е. FPS, в современных браузерах HTML5? Меня особенно интересует FPS для анимации холста.

http://weblogs.mozillazine.org/roc/archives/2010/11/measuring_fps.html скажет вам, что попытка измерить частоту кадров путем подсчета частоты, с которой работает setTimeout, не точна. Браузер может запускать обратный вызов Timeout несколько раз между рисованиями экрана.

Оказывается, в Mozilla есть window.mozPaintCount https://developer.mozilla.org/en/DOM/window.mozPaintCount, который должен обеспечивать точный FPS. Однако это работает только для Mozilla.

Существует открытая проблема для Chrome для чего-то подобного: http://code.google.com/p/chromium/issues/detail?id=65348

Ручной способ проверить аппаратное ускорение FPS в Chrome - захватить бета-канал Chrome (на дату публикации) и перейти к about: flags и включить FPS Counter. Однако на Mac ускорение включается только при использовании WebGL. Таким образом, невозможно проверить FPS для Canvas в Chrome для Mac.

Какие существуют другие стратегии для точного измерения FPS в HTML5?

Спасибо!

1 Ответ

10 голосов
/ 28 марта 2011

Пожалуйста, проверьте:

  • https://github.com/mrdoob/stats.js - это лучший монитор FPS, который я знаю.Он также дает вам некоторые статистические данные об использовании mem / cpu (вы должны запустить свой браузер со специальным параметром, чтобы предоставить эти данные), но также может пострадать от описанной вами неточности.1011 *https://github.com/pcwalton/firefox-framerate-monitor

Кроме того, в новых сборках Chrome (возможно, канарейка) должен быть параметр для отображения FPS в about:flags.

...