Разработчики Mozilla столкнулись с проблемой производительности в GCC 4.5

26 июня 2010 года

Разработчики проекта Mozilla опубликовали уведомление, в котором приводятся факты значительного падения производительности Firefox при его сборке в GCC 4.5. Проблемы были обнаружены после попытки перехода для сборки Linux-версии браузера с GCC 4.3 на GCC 4.5, после чего автоматизированные тесты выявили падение производительности браузера на 4-19%, как в 32-разрядном, так и в 64-разрядном варианте.

Убедиться в справедливости заявления может любой желающий, достаточно проверить скорость прохождения JavaScript-теста Sunspider, при сборке Firefox в GCC 4.5, тест показывает на 8% более низкие показатели при прочих равных условиях. Переход на GCC 4.5 был связан с плагинами и возможностью сборки с PGO (profile-guided optimization) . После обнаружения регрессии, разработчики Mozilla отменили свое решение о переходе на сборку с использованием GCC 4.5.

В ответ на заявление, один из разработчиков GCC подчеркнул, что среди используемых при сборке Firefox флагов оптимизации ("-fPIC -fno-rtti -fno-exceptions -Os") присутствует опция "-Os", которая переводит компилятор в режим оптимизации по размеру исполняемого кода в ущерб скорости и посоветовал использовать при сборке режим оптимизации "-O2". Представители Mozilla ответили, что сборка с опцией "-Os" производится, так как исторически сложилось, что такая сборка работает быстрее, чем при использовании "-O2" - код получается существенно меньшего размера (уменьшение до 30%), что приводит к его ускорению за счет того, что код чаще умещается в кэш процессора.

В итоге, проблема оказалась связана с прекращением в GCC 4.5 inline-развертывания кода в режиме "-Os", что и приводит к замедлению выполнения. В настоящее время разработчики рассматривают возможные пути устранения возникшей регрессии, устранение которой скорее всего появится в ветке GCC 4.6.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Разработчики Mozilla столкнулись с проблемой производительности в GCC 4.5», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.