У меня есть простая игра на холсте.Он спроектирован с помощью простого цикла requestAnimationFrame
, который обновляет состояние и затем отображает на холсте (просто!).Он работает очень хорошо на настольном компьютере + iOS, но на Chrome на Android он работает ужасно.
Вот цикл, например:
var tick = function()
{
requestAnimationFrame(tick,canvas);
cur_scene.tick();
cur_scene.draw();
}
Итак, я поднял удаленный профилировщик, записалбыстрый сеанс, и в течение (любой заданной) 1 секунды он показывает ~ .82s в режиме ожидания (сценарии .11s, .04s 'other', .02 рисование, .005 рендеринг).
Он также показывает ~.1 с на кадр (интервал между последовательными Animation Frame Fired
записями на графике пламени).Но график пламени похож (в соответствии с другими измерениями) на 80% пуст?Я неправильно читаю диагностическую информацию?Правильно ли я структурировал цикл requestAnimationFrame?
Редактировать: Вот аннотированное изображение некоторых диагностических показателей производительности (снято путем записи удаленного сеанса на моем телефоне Android) 