URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 49723
[ Назад ]

Исходное сообщение
"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4.0"

Отправлено opennews , 20-Фев-09 23:30 
Надеясь разобраться в причинах отставания OpenSolaris в недавно проведенном тестировании (http://www.opennet.me/opennews/art.shtml?num=20174), ресурс phoronix.com решил (http://www.phoronix.com/scan.php?page=article&item=sun_studi...) оценить разницу в производительности приложений, собранных компиляторами Sun Studio 12 (2008/10/07), GCC 3.4.3 и GCC 4.0.2. Тесты выполнялись на платформе OpenSolaris 2008.11.


Итоги:


-  В тесте (http://www.phoronix.com/scan.php?page=article&item=sun_studi...) на скорость кодирования MP3 в LAME, GCC 4 сборка выполнила задание за 43 секунды, GCC 3 - за 45, а Sun Studio 12 - за 127 сек., т.е. выполнялась в 3 раза дольше. При кодировании в формат Ogg  отставание Sun Studio 12 было не столь значительным: 37 против 27 секунд. Вероятно причиной отставания является недостаточное использование опций оптимизации при сборке программ в Sun Studio, в то время как при сборке в GCC разработчики задействовали более эффективные опции оптимизации ...

URL: http://www.phoronix.com/scan.php?page=article&item=sun_studi...
Новость: http://www.opennet.me/opennews/art.shtml?num=20393


Содержание

Сообщения в этом обсуждении
"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4.0"
Отправлено Logo , 20-Фев-09 23:30 
Шото этот тест мне не понятен. Почему GCC 4.0.2? Чтобы в последнем тесте специально показатель был ниже у GCC.

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Logo , 20-Фев-09 23:31 
В предпоследнем тесте

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Аноним , 20-Фев-09 23:59 
>Шото этот тест мне не понятен. Почему GCC 4.0.2? Чтобы в последнем
>тесте специально показатель был ниже у GCC.

В BlastWave репозитории новее нет.


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено User294 , 21-Фев-09 02:31 
>В BlastWave репозитории новее нет.

А как это относится к производительности GCC?У меня вот в убунте gcc 4.3.2 и меня если честно крайне мало колыхает у кого там чего нет :).У меня то есть.


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Free , 21-Фев-09 00:55 
В Sun Studio по умолчанию очень плохая оптимизация. Код может быть в три-четыре раза медленнее, чем для GCC, Intel, PGI, etc. Всегда необходимо использовать -fast, иначе сравнение бессмысленное. Ну вот такое вот поведение у Sun Studio. Для других компиляторов эффект -fast будет незначительным 10-30%.

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Mikk , 21-Фев-09 10:31 
Если это действительно так, то сам с собой напрашивается вопрос, а почему же OpenSolaris собирают без этого флага?

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено horsh , 22-Фев-09 02:05 
>почему же OpenSolaris собирают без этого флага?

OpenSolaris собирают разные файлы с разными флагами.
Ядро одно дело, стандарный user land - другое, прикладные программы из поставки третье.

-fast - это макрос который раскрывается в набор опций (для вудкреста пример).

-xlibmil -xlibmopt -D__MATHERR_ERRNO_DONTCARE

Это флаги регулирующие поведение функций из math.h/libm.so
Замену на более быстрые функции или оптимизированные последовательности.
Ядро с libm не линкуется - поэтому они ему не нужны.

-fns -nofstore -fsimple=2 -fsingle

это все упрощения плавающей точки. в ядре в основном целочисленный код.

-xarch=ssse3

это выбор архитектуры SSSE3. Очевидно не подходит для сборки билда общего назначения операционной системы (если б это была gentoo - это было бы приемлимо).
Для amd64 использовался флаг -xarch=amd64 (сейчас, наверное, пишут -m64).


-xcache=32/64/8:4096/64/16 -xchip=core2

это заточки под конкретное железо на котором производится компиляция.


-xbuiltin=%all

Этот флаг говорит компилятору заменять известные функции из libc.so и
других стандартных библиотек на оптимизированные последовательности.
Ядро с этими библиотеками, понятное дело, не линкуется - поэтому и тут мимо.


-xdepend=yes

Включить dependence analysis циклов.
Вполне подходит для ядра.
Ну и соответственно по крайней мере в /usr/src/Makefile.master он упоминается.


-xregs=frameptr

Это аналог omit-frame-pointer из gcc. Использование регистра BP как регистра общего назначения, а не в качестве указателя кадра стека.
Солярис - система в которой очень ценят наблюдаемость - "observability".
Поэтому этот флаг не используется.
Более того на amd64 используется -Wu,-save_args флаг который говорит компилятору складывать аргументы функций которые по соглашениям о вызовах едут на регистрах
в специально отведенное место на стеке.

-xO5

При сборках соляриса используется -xO3.
По сути -xO4 добавляет агрессивный инлайнинг,
а -xO5 может сильно раздуть результирующий код, но не принести реального выирыша.
Инлайнинг в ядре штука мешающая отладке, наблюдаемости и анализу post mortem.
И раздутый код тоже ни к чему. Поэтому, ЕМНИП, используется -xO3.

-xalias_level=basic

это обещание компилятору что указатели базовые типы (int*, float*) указывают именно на те
типы на которые написано. Производительность разные подфлаги -xalias_level могут
поднять очень существенно. Но нужно очень внимательно следить за тем что написано в вашем коде. Этот флаг советует компилятору более буквально следовать семантике
записаной в стандарте языка, что часто не соответствует ожиданиям программиста.
Поэтому во избежание.

Тем не менее все эти опции так или иначе используются для сборки стандартного user land'а
и прочих программ.
-fast задокументирован как отправная точка настройки вашей программы, некоторый общий знаменатель для получения хорошей производительности.
Стартуя от нее можно заниматься профилировкой и что-то добавлять, а что-то убирать.


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4.0"
Отправлено auk , 21-Фев-09 06:11 
>> Так PHP был собран из исходных текстов при помощи Sun Studio за 20 сек., а при помощи GCC за 34 секунды.

тут ничего не напутано?
мне бы такую железку на работу
проекты уровня PHP собирабтся за секунды


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено sndev , 21-Фев-09 09:10 
+1, как-то сборка пхп пакета за 30 секунд звучит несколько стремно

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Mox , 21-Фев-09 10:16 
Что значит проекты? они собирали сам PHP, а не проекты, написанные на PHP

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Аноним , 21-Фев-09 12:44 
у меня за 41 секунду собирается и я бы не сказал что железо какое-то мега: 2*E5410

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4.0"
Отправлено Аноним , 21-Фев-09 11:34 
На самом деле SunCC под Linux очень и очень не плох, позволяет добиться сильно лучшей оптимизации кода в сравнении с GCC 4.3.3. В есть даже такая фича, как профилирование после сборки с записью инфы о работе программы, о горячих и холодных участках кода и сборка компиляция программы уже на основе этой статистике. В GCC такого нету

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено pazke , 21-Фев-09 12:23 
>На самом деле SunCC под Linux очень и очень не плох, позволяет
>добиться сильно лучшей оптимизации кода в сравнении с GCC 4.3.3. В
>есть даже такая фича, как профилирование после сборки с записью инфы
>о работе программы, о горячих и холодных участках кода и сборка
>компиляция программы уже на основе этой статистике. В GCC такого нету

-fprofile-generate
-fprofile-use


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Аноним , 21-Фев-09 13:25 
>-fprofile-generate
>-fprofile-use

Зато у версии 4.3.x GCC регрессия в 30% на 64 битном коде


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено User294 , 21-Фев-09 17:14 
>Зато у версии 4.3.x GCC регрессия в 30% на 64 битном коде

Пруфлинк?Или методы бенчмарка?


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено Аноним , 21-Фев-09 17:29 
http://www.mail-archive.com/gcc@gcc.gnu.org/msg24423.html

"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено pazke , 21-Фев-09 18:27 
>http://www.mail-archive.com/gcc@gcc.gnu.org/msg24423.html

Там вообще-то о фортране речь идет.
Не факт, что код на C затронут этой проблемой.


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4...."
Отправлено User294 , 21-Фев-09 22:19 
>http://www.mail-archive.com/gcc@gcc.gnu.org/msg24423.html

Дык там про какую-то байду на фортране?!Мне фортран неинтересен.Вообще.


"Сравнение производительности Sun Studio 12, GCC 3.4 и GCC 4.0"
Отправлено Аноним , 21-Фев-09 17:55 
Я вообще не понимаю, как можно смотреть на результаты тестов, в которых не указаны команды сборки.
Если они просто CC=cc CXX=CC ./configure && make
то даже смотреть не на что... Из всего, что приходилось собирать под Солярис, только openSll и nginx установили хоть какие-то флаги отптимизации для sunStudio. Причем только nginx сделал все совсем правильно (Спасибо Игорю Сысоеву). А firebird так например вообще упорно добавлял команды оптимизации gcc. гнушные проекты не считают должным знать о других компиляторах...