Разработчики Mozilla работают над реализацией многопоточного рендеринга web-страниц
18 июня 2011 года
На конференции O'Reilly Velocity в выступлении представителя проекта Mozilla была озвучена идея создания механизма многопоточной обработки DOM-дерева, что позволит ускорить отображение отдельных web-страниц за счет того, что в процессе обработки одной web-страницы будут задействованы несколько процессорных ядер. Данный проект пока находится на ранней стадии развития и базируется на использовании разрабатываемого в недрах Mozilla языка программирования Rust, ориентированного на параллелизм и безопасность.
Грейдон Хоаре (Graydon Hoare), автор языка Rust, в настоящее время работает в Mozilla и по словам докладчика занимается развитием языка Rust в режиме полного рабочего дня. По структуре язык напоминает C++, но позволяет формировать задачи в виде легковесных сопрограмм и способен порождать тысячи и даже миллионы подпроцессов. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от возникающих из-за низкоуровневой работой с памятью проблем, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п.
В настоящее время браузеры пытаются задействовать более полное использование имеющихся процессорных ресурсов за счет обеспечения распараллеливания таких действий, как обработка вкладок, выполнение плагинов, отправка http-запросов, декодирование видео и обеспечение работы интерфейса браузера отдельно от кода рендеринга страниц. В вышеупомянутых случаях отдельные функции выносятся в отдельные процессы, которые могут функционировать параллельно. В случае WebGL снижение нагрузки на CPU обеспечивается за счет привлечения ресурсов GPU.
При обработке одной страницы все ещё используются однопоточные схемы, что мешает использованию потенциала современных многоядерных CPU. Однопоточным остается связанный с DOM (Document Object Model) внутренний API, а также функции формирования содержимого окна, парсинга HTML и выполнения JavaScript, в контексте одной страницы. С ростом размера современных web-приложений и превращения браузера в платформу для выполнения web-приложений, однопоточная обработка одной страницы становится узким местом в производительности браузера.
В качестве выхода разработчики Mozilla пытаются переработать связанный с обработкой дерева DOM код, используя язык Rust. Основная идея заключается в том, чтобы разбить код DOM и рендеринга на более мелкие подзадачи, которые смогут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. К сожалению, готового прототипа кода ещё не существует, определенных планов по внедрению данного проекта тоже пока нет - в настоящее время проект носит исследовательский характер.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.