PDA

Просмотр полной версии : В ночных сборках Firefox заметно увеличена производительность JIT-компиляции


Suicide
27.09.2020, 16:39
В ночные сборки (https://nightly.mozilla.org/) Firefox включён (https://groups.google.com/g/mozilla.dev.platform/c/1PHhxBxSehQ/m/V-tLMPftBQAJ) обновлённый JIT-компилятор, развиваемый (https://bugzilla.mozilla.org/show_bug.cgi?id=1613592) под кодовым именем WarpBuilder. Для активации нового JIT в about:config предложена опция "javascript.options.warp". Отмечается, что WarpBuilder является лишь первым шагом на пути к включению в браузер новых оптимизаций, которые планируется реализовать в течение следующего года.

Новый JIT позволяет поднять производительность JavaScript-движка SpiderMonkey за счёт сокращения внутренней информации о типах, отслеживаемой внутри движка, и применению техники кэширования промежуточного кода (CacheIR), ранее предложенной (https://www.opennet.ru/opennews/art.shtml?num=51727) в "baseline" интерпретаторе байткода, который занимает промежуточную нишу между обычным интерпретатором и предварительным JIT-компилятором. Указанные изменения позволили заметно упростить архитектуру JIT, повысить отзывчивость, сократить время загрузки страницы и снизить потребление памяти.

Отмечается (https://bugzilla.mozilla.org/show_bug.cgi?id=1613592), что новый JIT позволил решить многие проблемы старого JIT IonBuilder, такие как:


Усложнённость реализации и потенциальные проблемы с безопасностью;

Дополнительные накладные расходы для кода Baseline/C++;

Излишня специализация, приводящая к ненужным перекомпиляциям;

Формирование промежуточного кода MIR (https://wiki.mozilla.org/IonMonkey/MIR) (Middle-level IR) в основном потоке (в WarpBuilder основная сборка промежуточного кода вынесена в отдельный поток);

Дополнительное расходование памяти на хранение данных о типах и группах объектов (ObjectGroups).
В среднем в тестах, оценивающих производительность на основе визуальных метрик, при использовании WarpBuilder наблюдается ускорение на 5-15%. Скорость прохождения теста Speedometer увеличилась на 10%. Тестирование на реальных сайтах показало сокращение времени загрузки Google Docs на 20% (https://mzl.la/3cp6dAs), показатель SpeedIndex (https://web.dev/speed-index/) при открытии раздела Android в Reddit улучшился на 13% (https://mzl.la/2RUWdp8), pdfpaint стал работать быстрее на 18% (https://mzl.la/2HtXb9W). Потребление памяти в тесте tp6 (https://mzl.la/3j2VwGb) снизилось на 8%. Показатели (https://mzl.la/3kLbhSM) статистики в инструментах для разработчиков (devtools perf) также продемонстрировали снижение потребления памяти на 8%.

27.09.2020

https://www.opennet.ru/opennews/art.shtml?num=53789​