The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

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

Разработчики проекта 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.

  1. Главная ссылка к новости (http://www.phoronix.com/scan.p...)
  2. OpenNews: Релиз набора компиляторов GCC 4.5.0
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: gcc, firefox, speed
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, qwerty44 (?), 00:46, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]
  • +4 +/
    настоящие индейцы и так собирают firefox с -O3
     
     
  • 2.42, User294 (ok), 15:24, 27/06/2010 [^] [ответить]    [к модератору]
  • +1 +/
    А это не они потом оглашают прерии воплями по поводу грабель которых больше ни у кого нет? :)
     
     
  • 3.52, Taliban (?), 10:47, 30/06/2010 [^] [ответить]     [к модератору]
  • +/
    в принципе, разные числодробилки, компильнутые с этой опцией, работали корректно... весь текст скрыт [показать]
     
  • 1.2, Аноним (-), 00:58, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +16 +/
    Новость ни о чём.

    P.S. Ну пусть сделают ключ --please-use-inline-functions-even-with-dash-Os.

     
     
  • 2.43, Alex (??), 16:49, 27/06/2010 [^] [ответить]    [к модератору]  
  • +/
    -use-inlining-in-Os-for-mozilla-braindead-distmakers

    Fixed.

     
     
  • 3.49, God (?), 11:32, 28/06/2010 [^] [ответить]    [к модератору]  
  • +3 +/
    --God-please-make-may-program-very-fast
     
  • 1.4, FPGA (ok), 01:24, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Ха! Впервые вижу чтобы жаловались на скорость когда юзают -Os, просто смех!..
     
     
  • 2.20, Michael Shigorin random (?), 10:23, 26/06/2010 [^] [ответить]    [к модератору]  
  • +2 +/
    "Ах, сколько нам открытий чудных"... ;)
    Просто Вы ещё тоже многого не видели, довод про кэш справедлив.
     
  • 1.6, Аноним (-), 02:17, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Скажите им, чтобы попробовали clang
     
  • 1.8, Аноним (-), 03:49, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    OMG. Классный довод, про кеш. Ну пусть попробуют -O3, -O2, -flto там. :)
    Написать чтоль им об этом.:)
     
     
  • 2.26, iZEN (ok), 15:14, 26/06/2010 [^] [ответить]    [к модератору]  
  • +10 +/
    "120 миллионов точно знают, как играть в футбол, в отличие от тех 22-х на футбольном поле" ©
     
     
  • 3.48, Аноним (-), 10:44, 28/06/2010 [^] [ответить]     [к модератору]  
  • +/
    Ну, про кэш может и реально, но не судьба с новой версией GCC попробовать и новы... весь текст скрыт [показать]
     
  • 1.9, Vladimir (??), 05:00, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Уважаемые участники

    есть ли у кого-нибудь конкретные примеры программ, скомпилированными с GCC 4.5, но которые не могли после этого работать?

    (У меня только два примера: emacs и dvisvgm, со вторым совсем глухо, для первого есть "обходной" манёвр).

    Похоже разработчики mozilla открыли ещё одну новую "фичу" GCC серии 4.5

     
     
  • 2.17, Аноним (17), 09:50, 26/06/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    > emacs

    несколько месяцев собираю emacs из bzr (trunk) с помощью gcc45 + -flto + gold на freebsd. Не замечал никаких проблем в runtime'е.

     
  • 2.25, Aquarius (ok), 15:00, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    такого рода "фич" полно в каждой ветке GCC
     
  • 2.28, аноним (?), 16:14, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    Нету, у меня все собирается gcc45, никаких проблем.
     
  • 2.32, Аноним (-), 16:52, 26/06/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    У меня qt-webkit, собранный gcc-4.5, приводит к краху Arora, qutim, и даже qt-creator при просмотре документации.
     
  • 1.10, DFX (ok), 07:12, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    а собирать с "-Os -finline-functions" не катит ? или оно прямо-таки сопротивляется и забивает ?

    жаль вот с gcc 4.5 куча софта в мире генты, когда с флагом -flto/-fwhopr, не связывается после сборки :(
    без него, правда, только два вышенаписанных примера выделываются, и то несчастное брошенное чудо, вроде ksquirrel и openastromenace, что с 4.4 или 4.3 не собиралось.

     
  • 1.11, Аноним (-), 07:35, 26/06/2010 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Друзья, кто-нибудь может разъяснить, почему в релизной сборке Мозиллой не исполь... весь текст скрыт [показать]
     
     
  • 2.16, anonymous (??), 08:39, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    при -O3 размер исполняемого кода получается больше.
     
     
  • 3.18, Аноним (-), 09:54, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    > при -O3 размер исполняемого кода получается больше.

    не намного больше чем по сравнению с -funroll-loops. Скорее всего боятся -ftree-vectorize.

     
  • 2.19, ws (ok), 10:22, 26/06/2010 [^] [ответить]     [к модератору]  
  • +/
    Пробовал на генту мир собирать с -O3 - некоторые программы работают не стабильно... весь текст скрыт [показать]
     
     
  • 3.21, bircoph (?), 12:49, 26/06/2010 [^] [ответить]     [к модератору]  
  • +/
    x86, по-видимому Добавь -fno-tree-vectorize это известный баг gcc https bugs... весь текст скрыт [показать]
     
     
  • 4.33, ws (ok), 16:57, 26/06/2010 [^] [ответить]     [к модератору]  
  • +1 +/
    да Возможно такого рода и был баг я сильно не вникал в эту проблему , но я проб... весь текст скрыт [показать]
     
  • 3.29, аноним (?), 16:15, 26/06/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    >субъективно работает медленее, хотя должно наоборот

    Субъективно своё знаете куда можете?

     
     
  • 4.37, ws (ok), 19:42, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    >>субъективно работает медленее, хотя должно наоборот
    >
    >Субъективно своё знаете куда можете?

    Моя субъективность очень совпадает с реальностью Mozilla Team...  :)

     
  • 1.12, Аноним (-), 08:06, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    >режим оптимизации по размеру исполняемого кода в ущерб скорости

    Интересная опция. Какая же это оптимизация тогда? В чем она заключается? в падении скорости? :)

     
     
  • 2.14, Alen (??), 08:20, 26/06/2010 [^] [ответить]    [к модератору]  
  • +2 +/
    Вот сразу видно, что человек писатель, а не читатель :)
     
  • 2.15, anonymous (??), 08:23, 26/06/2010 [^] [ответить]    [к модератору]  
  • +/
    >Какая же это оптимизация тогда? В чем она заключается?

    русским языком же написано: "оптимизация по размеру". оптимизируют не только скорость.

     
  • 2.34, Zenitur (?), 17:01, 26/06/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    Если все оптимизации убрать, то собираться будет быстро, а работать - медленно.
     
  • 2.50, User294 (ok), 12:46, 28/06/2010 [^] [ответить]     [к модератору]  
  • +1 +/
    Как пример есть цикл, где N раз делается нечто, допустим N заранее известно ком... весь текст скрыт [показать]
     
     
  • 3.54, PereresusNeVlezaetBuggy (ok), 13:42, 04/07/2010 [^] [ответить]     [к модератору]  
  • +/
    В реальных процессорах ещё хитрее если длина цикла в микроинструкциях будет мен... весь текст скрыт [показать]
     
     
  • 4.56, User294 (ok), 15:18, 07/07/2010 [^] [ответить]    [к модератору]  
  • +/
    Там еще стопицот факторов может быть, при том все из них оценить лично я для монстриков типа core i7 и подобных имхо даже обломаюсь.
     
  • 1.22, Роман (??), 12:54, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    >Представители Mozilla ответили, что сборка с опцией "-Os" производится, так как исторически сложилось, что такая сборка работает быстрее, чем при использовании "-O2"

    Нда... а почему ж тогда отошли от "исторических" традиций использования gcc 4.3?
    Непоследовательно как-то...

     
  • 1.23, Роман (??), 12:56, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >так как исторически сложилось, что такая сборка работает быстрее, чем при использовании "-O2"

    Если так, то это был исторический _баг_ в старых gcc, исправленный в 4.5. А они  ещё жалуются.

     
     
  • 2.39, Sem (??), 01:57, 27/06/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    Включите мозг наконец! Это не баг. Что включать в -Os, а что нет, это мнение разработчиков gcc. Для таких крупных проектов как Mozilla, разница в размере с -Os и -O2 может быть очень существенной. А вот то, что, похоже, -Os -finline-functions не срабатывает, это не хорошо, это гораздо больше похоже на баг.

    Лучше бы PGO обсудили )

     
  • 1.27, аноним (?), 16:13, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Это идиотизм, как и -Os в принципе - нужно это разве что для всякого embedded и никакой производительности не гарантирует и не должно.
     
     
  • 2.40, Sem (??), 02:15, 27/06/2010 [^] [ответить]    [к модератору]  
  • +/
    >Это идиотизм, как и -Os в принципе - нужно это разве что
    >для всякого embedded и никакой производительности не гарантирует и не должно.
    >

    Идиотизм - это делать опальные заявления.
    В идеале, это конечно так и есть, но когда у тебя проект больше чем на 7 млн. строк, то тут уж крутишься как получится.

     
  • 1.30, аноним (?), 16:17, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Нормальным системам (FreeBSD как минимум) пофиг - там все собирается с теми флагами, которые я сказал, а не с тем что исторически сложилось у криворуких разработчиков.
     
     
  • 2.46, i (??), 10:23, 28/06/2010 [^] [ответить]    [к модератору]  
  • +2 +/
    причем здесь вы и разработчики мозиллы? и когда это фрибсд стала нормальной/по сравнению с чем, системой?
     
  • 2.51, User294 (ok), 21:43, 28/06/2010 [^] [ответить]    [к модератору]  
  • +/
    > Нормальным системам (FreeBSD как минимум) пофиг

    В "нормальной" системе для начала вообще GCC 4.5 не юзают. Как минимум сразу и по дефолту ;) (GPL v3 видите ли кому-то мешает).

     
  • 1.31, Имя123321 (?), 16:42, 26/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > В настоящее время разработчики рассматривают возможные пути устранения возникшей регрессии,

    в чём же регрессия, если стало только лучше? с -Os стало меньше памяти, как и планировали

    в Мозиле всё больше и больше вендо-маразма.

     
  • 1.41, kramer (??), 11:55, 27/06/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    gcc is dead
    use clang\llvm - true free BSDL
     
     
  • 2.44, Alex (??), 16:52, 27/06/2010 [^] [ответить]    [к модератору]  
  • +/
    >gcc is dead
    >use clang\llvm - true free BSDL

    your brain is dead. use calc - true helper for those without brain

     
  • 1.45, Аноним (-), 05:22, 28/06/2010 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Глупость какая-то несусветная, как я же это регрессия Дублирование кода встраи... весь текст скрыт [показать]
     
     
  • 2.47, const86 (ok), 10:24, 28/06/2010 [^] [ответить]    [к модератору]  
  • +/
    > Дублирование кода (встраивание inline) и уменьшение размера — это же полностью противоположные вещи.

    Не полностью. При встраивании экономится собственно вызов и сохранение/восстановление части регистров. Если встраиваемая функция совсем маленькая, то может получиться и без общего увеличения кода.

     
     
  • 3.55, PereresusNeVlezaetBuggy (ok), 13:45, 04/07/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    >> Дублирование кода (встраивание inline) и уменьшение размера — это же полностью противоположные вещи.
    >
    >Не полностью. При встраивании экономится собственно вызов и сохранение/восстановление части регистров. Если
    >встраиваемая функция совсем маленькая, то может получиться и без общего увеличения
    >кода.

    Более того, при встраивании оптимизация прогоняется по всей результирующей функции, и там могут вылезти очевидные лишь для компилятора закономерности, которые он тоже сможет сократить (например, убрав лишние проверки или присваивания).

     
  • 1.53, Alex (??), 10:16, 03/07/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    У мозиллы проблемы с производительностью в голове. От оперы и хрома отстает в 2 раза, тормозное и глючное, и GCC там не при чем.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor