Ответ 1
Я тоже видел это на своих страницах/приложениях. Проблема, похоже, применима ко всему, но более выражена с холстом и ускоренным CSS. Насколько я могу судить, эта проблема связана с ошибкой производительности, связанной с отображением композитного слоя. В основном Chrome разбивает страницу на слои и использует графический процессор для рендеринга этих слоев. Вы можете увидеть их, включив опцию "Показывать сжатые слои" на вкладке "Рендеринг" на консоли dev. Эффективность Chrome FPS уменьшается по мере увеличения количества составных слоев независимо от изменения слоев или нет.
Вот независимый пример. Шаги для воспроизведения:
- Загрузите эту страницу в Chrome, это относительно простая анимированная демо-версия CSS, которая является фиксированным размером, подобным вашей игре: http://www.subcide.com/experiments/fail-whale/
- Поднимите окно разработчика Chrome (вытащите его так, чтобы оно было независимым) и включите опцию "Показать FPS-метр".
- Размер окна небольшой, чтобы он просто содержал демо-версию кита. Обратите внимание на свой FPS.
- Теперь размер окна большой или полный экран. Обратите внимание на свой FPS.
С маленьким окном я получаю 55 FPS. На весь экран я получаю 34 FPS. Я ожидал бы, что FPS будет почти одинаковым, независимо от размера страницы, поскольку анимированная область не изменится. FPS, по-видимому, пропорционален количеству составных слоев на видимом экране. Кроме того, изменение размера окна приводит к тому, что анимация становится короткой и пропускает кадры. Если я буду выполнять одинаковое изменение размера окна в Safari, анимация останется гладкой. Safari не знает ничего нового для рендеринга, в то время как Chrome, похоже, делает кучу работы без причины.
Итак, причина, по которой вы видите лучшую производительность при открытии вашей консоли разработчика, - это то, что у вас есть встроенная/встроенная страница разработчика, которая делает страницу самой маленькой при ее открытии. Это приводит к созданию страницы с меньшим количеством композитных слоев для обработки Chrome, что приводит к улучшению FPS. Если вы выходите из консоли разработчика, чтобы это независимое окно и не влияло на размер страницы, на ваш FPS не повлияет консоль dev или нет.
Похоже, это "почему" это происходит. Теперь, если кто-нибудь выяснит, что можно сделать по этому поводу, мне было бы интересно узнать.