У меня есть страница, на которой выполняются довольно тяжелые (скорее, средние) операции canvas
.Для обслуживания пользователей на мобильных устройствах и старых компьютерах я подумал, что мог бы реализовать механизм, который будет проверять, действительно ли элемент canvas виден, и решать, нужно ли выполнять постоянные вычисления и обновления холста (анимация, работающая со скоростью 30 кадров в секунду) или нет.
Это работает нормально, но при выполнении теста производительности с помощью инструментов Chrome Dev я заметил, что даже когда я отключаю свою проверку видимости и просто позволяю вещам все время рендериться, использование ЦП рассматриваемой функции падаетсовсем немного, когда никакая часть элемента (ов) холста не видна (хотя в теории он все еще должен выполнять те же задачи).Итак: по крайней мере, на моем компьютере с Chrome 17 не будет никакой разницы, если я проверю фактическую видимость элемента.
Короче говоря: нужно ли это делать или браузеры достаточно умныразобраться с таким случаем, даже не сказав им (и я могу сохранить проверку видимости)?
РЕДАКТИРОВАТЬ :
Поэтому я провел "исследование"эта тема и построена эта скрипка.
Что происходит, так это то, что он просто генерирует шум со скоростью 30 кадров в секунду.Не слишком приятно для глаз, но, ну ... Верхняя часть - это просто div
, чтобы заблокировать окно просмотра.Когда я прокручиваю вниз и вижу элемент canvas
в окне просмотра, загрузка процессора говорит мне, что он занимает около 40%, так что, видимо, браузер действительно должен здесь многое сделать.Когда я прокручиваю назад вверх, чтобы в моем окне просмотра был выделен бордовый цвет div
и профилировал загрузку процессора, он упал до 10%.Когда я прокручиваю назад вниз: использование снова возрастает.
Поэтому, когда я реализую проверку видимости, как в этом модифицированной скрипке , я вижу увеличение (крошечноеодин, если честно) в использовании процессора вместо отбрасывания (поскольку у него есть дополнительная задача проверки, находится ли холст внутри области просмотра).
Так что мне все еще интересно, является ли это побочным эффектом чего-то, чтоЯ не знаю (или я делаю какую-то серьезную ошибку при профилировании) или могу ли я ожидать, что браузеры будут достаточно умными, чтобы справляться с такими ситуациями?
Если бы кто-то мог пролить свет на это, я бы оченьблагодарны!