Chrome 55 сократил потребление памяти на 30%
Компания Google выкатила новую версию браузера Chrome 55 на основном канале. Это обновление порадует пользователей Chrome как никакое другое, потому что разработчики провели очень серьёзную работу по оптимизации расхода оперативной памяти. Потребление ОЗУ на вкладках с включенным или отключенным блокировщиком рекламы сократилось примерно на 30%.
Например, сайт с прогнозом погоды Weather.com в браузере теперь занимает не 340 МБ, а всего лишь 250 МБ. Главная страница Reddit.com ужалась примерно со 160 МБ до 110 МБ.
На одной из тестовых систем главная страница Geektimes с отключенным блокировщиком рекламы в предыдущей версии Chrome 54 занимала 65 МБ. После обновления на Chrome 55 и перезагрузки страницы потребление памяти сократилось до 58,5 МБ. Через полминуты (возможно, по окончании парсинга) часть ОЗУ освободилось — и диспетчер задач Google Chrome показывает всего 45,5 МБ занимаемой памяти.
Вкладка с Gmail уменьшила потребление оперативной памяти до скромных 185−215 МБ.
Разработчики из Google провели собственное тестирование. В отличие от вышеупомянутых субъективных цифр из окна диспетчера задач, разработчики использовали повторяемую и точную методологию с помощью фреймворка Telemetry. Для этого фреймворка составили скрипт, который осуществляет стандартные действия на каждом веб-сайте (исходный код).
Но новостных сайтах и в социальных сетях сценарий следующий:
1. Открытие главной страницы сайта.
2. Щелчок по первой ссылке.
3. Ожидание загрузки страницы.
4. Скроллинг вниз на несколько экранов.
5. Нажатие на кнопку возврата к предыдущей странице
6. Переход по следующей ссылке оригинального веб-сайта и повтор шагов 3−6 несколько раз.
Для сайта медиа сценарий такой:
1. Открытие медийного элемента на сайте, например, видеоролика на YouTube.
2. Просмотр медийного контента в течение нескольких секунд.
3. Переход к следующему элементу и повтор шагов 2−3 несколько раз.
Для тестирования был отобран ряд популярных сайтов в каждой тематической категории. В процессе оптимизации движка V8 разработчики снова и снова прогоняли эти тесты с каждой новой версией, добиваясь уменьшения потребления оперативной памяти. Они также написали специальную утилиту v8 heap visualizer для визуализации статистики, которую выдаёт V8.
Визуализация занимаемой памяти, согласно выдаче v8 heap visualizer
Разработчики специально оптимизировали алгоритм работы сборщика мусора и внедрили более агрессивные методы уплотнения объектов в памяти, что должно особенно ощутиться на устройствах с относительно небольшим количеством памяти. На следующем графике показан результат этой оптимизации в Chrome 55, по сравнению с Chrome 53. Некоторые страницы вроде Hacker News и New York Times стали занимать в три раза меньше места в памяти, что означает оптимизацию на 66%.
Кроме среднего потребления памяти (график вверху), оптимизировано и пиковое потребление памяти за счёт лучшей упаковки полей в узлах синтаксического дерева, которое генерирует парсер. Раньше этим занимался по возможности компилятор C++, но оказалось, что он не всегда находит самые эффективные методы упаковки, так что разработчики реализовали свой алгоритм упаковки. Это не только уменьшило пиковое потребление памяти, но и увеличило производительность компилятора и парсера.
Пиковое потребление памяти V8 (peak zone memory) на десктопной системе в версиях 54 и 55
По оценке разработчиков Google, в версии Chrome 55 общее потребление памяти на компьютерах с небольшим количеством ОЗУ уменьшилось на 35%, по сравнению с версией Chrome 53. На других машинах (которые не относятся к профилю low-memory devices), будет зафиксирована экономия только от сокращения пикового потребления (peak zone memory), но она тоже весьма значительна, как видно на последнем графике.
Кроме существенной оптимизации V8 по потреблению оперативной памяти, в новой версии Chrome 55 реализована блокировка Flash-контента по умолчанию, если присутствует версия контента на HTML5. Более всеобъемлющая блокировка Flash появится позже в 2017 или 2018 году.
Традиционно исправлены уязвимости в безопасности, выявленные в последнее время, и реализован ряд других новых фич, в том числе обновленные инструменты разработчика.
Chrome 55 для разработчиков