Отрисовывают ли браузеры элементы холста, которые не находятся внутри окна просмотра?

У меня есть страница, на которой выполняются довольно тяжелые (скорее среднего веса) операции canvas. . Я подумал, что для обслуживания пользователей мобильных устройств и старых компьютеров я мог бы реализовать механизм, который будет проверять, действительно ли виден элемент холста, и решать, нужно ли выполнять постоянные вычисления и обновления холста (анимация работает со скоростью 30 кадров в секунду) или нет. .

Это работает нормально, но при тестировании производительности с помощью Chrome Dev Tools я заметил, что даже когда я отключаю проверку видимости и просто позволяю рендерингу выполнять все время, использование ЦП рассматриваемой функцией немного снижается, когда ни одна часть элемента (ов) холста не видна (хотя теоретически он должен выполнять те же задачи). Итак: по крайней мере, на моем компьютере с Chrome 17 это не имеет большого значения, если я проверяю фактическую видимость элемента.

Короче говоря: нужно ли мне это делать, или браузеры достаточно умны, чтобы справиться с таким случаем, даже не сообщая им об этом (и я могу сохранить проверку видимости)?


РЕДАКТИРОВАТЬ:

Итак, я провел небольшое «исследование» по этой теме и построилэту скрипку.

Что происходит, так это то, что он просто генерирует шум со скоростью 30 кадров в секунду. Не слишком приятно для глаз, но, ну… Верхняя часть — это просто div, закрывающий окно просмотра. Когда я прокручиваю вниз и вижу элемент canvasв области просмотра, использование ЦП говорит мне, что он занимает около 40%, поэтому, очевидно, у браузера здесь довольно много работы. Когда я прокручиваю вверх, чтобы у меня был просто темно-бордовый divв моем окне просмотра и профилировал использование ЦП, оно падало примерно до 10%. Когда я прокручиваю вниз: использование снова увеличивается.

Поэтому, когда я реализую проверку видимости, как в этоймодифицированной скрипте , я вижу увеличение (честно говоря, крошечное) использования ЦП, а не падение (поскольку у него есть дополнительная задача проверка, находится ли холст внутри области просмотра).

Так что мне все еще интересно, является ли это каким-то побочным эффектом чего-то, о чем я не знаю (или я делаю какую-то серьезную ошибку при профилировании), или я могу ожидать, что браузеры будут достаточно умными, чтобы справиться с такими ситуациями?

Если бы кто-нибудь мог пролить свет на это, я был бы очень благодарен!

7
задан m90 25 March 2012 в 15:14
поделиться