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

26/06/2010 12:55

Разработчики проекта Mozilla опубликовали уведомление, в котором приводятся факты значительного падения производительности Firefox при его сборке в GCC 4.5, сообщает opennet.ru. Проблемы были обнаружены после попытки перехода для сборки 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.
Cообщение Mozilla