Я играю в игру и не могу достичь скорости 60 кадров в секунду, несмотря на то, что логика / рендеринг игры находятся в рамках необходимого бюджетаТипичный бюджет для 60 кадров в секунду составляет ~ 10-12 мс из-за перегрузки браузера. Если вы посмотрите на этот снимок экрана, задача, отвечающая за выполнение обратного вызова rAF, чрезмерно длиннее самого обратного вызова.
![frame performance](https://i.stack.imgur.com/IpzXJ.png)
Код довольно прост,зацикливание более 100 элементов, которые рисуют шестиугольные плитки на холсте, используя CanvasRenderingContext2D. Я исключил все вызовы для сохранения / восстановления для перф.
Если кто-то может объяснить, почему время между маленьким фиолетовым срезом Update Layer Tree
и зеленым срезом в конце задания Composite Layers
принимает такоедолго, это поможет. Или, если у кого-то есть какие-либо советы / приемы для работы с rAF.
Теория, которую я имел, состоит в том, что я каким-то образом держусь за ссылку в обратном вызове rAF, и это заставляет его ждать ??
Репо здесь: https://github.com/LudicGames/arce
Обновление: Вот еще один скриншот кадра со строкой графического процессора. Строка графического процессора показывает большое использование, но, кажется, нет никакого способа узнать что такое это использование. Предположительно рендеринг контекста, который я только что написал, но почему так долго?
Вы можете попробовать запустить представление здесь http://arce.io.
![frame timing](https://i.stack.imgur.com/i6yeo.png)