LINUX.ORG.RU

Сравнение компиляторов GCC3, GCC4 и Sun Studio

 , , sunstudio


0

0

По просьбе корпорации Sun, аналитики Phoronix.com провели сравнение эффективности работы компиляторов GCC 3.4.3, GCC 4.0.2, и Sun Studio 12. В тестах обе версии gcc вели себя схоже. Результаты измерений Sun Studio и скомпилированного ею кода по отношению к GCC:

  • PHP собирается из исходников быстрее в 1,7 раза.
  • LAME MP3 конвертирует wav -> mp3 в три раза дольше, а oggenc жмёт медленнее только на четверть.
  • Все сборки GnuPG шифруют на примерно одинаковой скорости. С SQLite ситуация аналогичная.
  • GraphicsMagick, собранный Sun Studio, работает в 2-4 раза быстрее, чем сборки от GCC.

Sun Studio - это набор компиляторов от Sun под ОС Linux и OpenSolaris для языков C, C++ и Fortran. Компиляторы владеют различными оптимизациями, в т.ч. OpenMP. Сравнение проходило на четырехядерном x86_64-процессоре под ОС OpenSolaris.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от AndreyKl

>Silvy, Вы меня _каждый_ день вгоняете в шок. Серьёзно. Вы просто украшение ЛОРа. Девушка, и такими постами бросаетесь. Большая, по-моему, редкость.

Я не представляю, как она терпит подобные оскорбления, авторы которых искренне считают их комплиментами:)

Led ★★★☆☆
()

Ну кто так тестирование проводит? Оно же ни о чем не говорит

alex-w ★★★★★
()

>GCC 3.4.3, GCC 4.0.2

Видать ничего древнее откопать не смогли... %)

Demon37 ★★★★
()

"PHP собирается из исходников быстрее в 1,7 раза."

Какое великое достижение! Только какое дело сану до Пых-пыхеров?

Bioreactor ★★★★★
()
Ответ на: комментарий от mv

>Учишь ассемблер, пишешь на нём пару лет, чтобы опыта поднабраться, потом objdump'ом смотришь,

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

madcore ★★★★★
()
Ответ на: комментарий от KRoN73

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority


core2, penryn,


sse3 тоже нету, есть ssse3 (расширения для sse3) и есть pni

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

А вы сперва почитайте, что есть ссе3 и где оно должно быть

madcore ★★★★★
()
Ответ на: комментарий от Sylvia

> sse3 тоже нету, есть ssse3 (расширения для sse3) и есть pni

Как оказалось "SSE3 (PNI — Prescott New Instruction) — третья версия SIMD-расширения Intel, потомок SSE, SSE2 и x86." Почему-то в ядре её закрепили именно как pni.

shahid ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

> спасибо за предложение, но лучше если все будут заниматься своей работой по специальности , учить ассемблер для меня наверное излишне, да и способностей математических нет :)

Если по-хорошему, то ассемблер для сишника - совсем не лишние знания. Простым просмотром дампа дизассемблира можно понять, кто виноват в косяке - ты или компилятор. Плюс как использовать все эти SSE? Сам компилятор нормально параллельную обработку сделать не может, руками через intrinsic функции в сишном стиле писать можно, но выглядит это просто ужасно.

mv ★★★★★
()

> По просьбе корпорации Sun, аналитики Phoronix.com провели сравнение эффективности работы компиляторов

И что после этого заказного сравнения можно ожидать? А ничего что sun studio проприетарно как нефть?

los_nikos ★★★★★
()
Ответ на: комментарий от Sylvia

>ведро 2.6.28.7 например вышло... если кто-то пользуется уже ext4 , то там много исправлений

Ещё играться с компиляцией 2.6.28.6 не закончил и тут на тебе...

Дамы и господа, подскажите, при компиляции ядра задание в makefile опций -mmmmx и -msseX что нибудь даст?

Robotron
()
Ответ на: комментарий от Robotron

> Дамы и господа, подскажите, при компиляции ядра задание в makefile опций -mmmmx и -msseX что нибудь даст?

В коде ядра использование floating point допустимо только когда без этого совсем никак не обойтись. Так что используется fixed point и соответственно под sse оптимизировать нечего. А mmx теоретически может просто поломать код, так как оно использует регистры fpu (а их при переключении в пространство ядра и обратно пришлось бы сохранять и восстанавливать).

ИМХО при компиляции ядра есть смысл указывать -march/-mtune и то не факт.

Deleted
()
Ответ на: комментарий от Deleted

именно так, нужные модули сами включают sse math (kqemu например) если оно им нужно,
а march mtune выбирается в меню конфигурирования, тип процессора

Sylvia ★★★★★
()
Ответ на: комментарий от Robotron

-O3 не обязательно даст прирост в скорости, хотя размер кода значительно увеличит, а GCC 4.3.x еще и будет более злобно вырезать неиспользуемый по его мнению код, что может привести к ошибкам

-msse4a , AMD ?

CXXFLAGS лучше задавать такие же как и CFLAGS

забыли march

Sylvia ★★★★★
()
Ответ на: комментарий от Robotron

если это для ядра... если честно я их не трогаю, ощутимого выигрыша это ни в чем не дает, ну и для критических кусков кода все равно используются безопасные флаги с отключением mmx/sse , если форсировать - выпадет в панику при загрузке

Sylvia ★★★★★
()
Ответ на: комментарий от Robotron

ядро? не надо

march из свойств процессора идет
CXXFLAGS... ну поищите там код на C++ ... причем именно код ядра

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

> а march mtune выбирается в меню конфигурирования, тип процессора

Сейчас посмотрел - точно ведь. А я раньше думал что там для чего-то другого тип процессора выбирается...

Deleted
()
Ответ на: комментарий от Sylvia

> -O3 не обязательно даст прирост в скорости, хотя размер кода значительно увеличит

Чаще ИМХО -O3 вообще к падению производительности приводит из-за того, что на распухшем коде перестаёт работать предсказание ветвлений или он вообще в кеш не входит (особенно если кеша на процессоре мало).

Deleted
()
Ответ на: комментарий от Deleted

вероятно для чего-то другого тоже, но march, mtune из него ставится тоже

Sylvia ★★★★★
()
Ответ на: комментарий от Deleted

мне про разницу -O2 и -O3 можно уже не рассказывать, я знаю )
и не только из за кеша, собственно в мануале GCC так и написано что

-O2 включает все возможные оптимизации не приводящие к увеличению размера кода

-O3 включает оптимизации приводящие к увеличению (кстати достаточно значительному) размеров кода, но не обязательно приросту производительности

а увеличение размера кода это еще и увеличение потребления памяти, ее как известно много не бывает

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

>ядро? не надо

Ядро уже перекомпилировал с флагами: HOSTCFLAGS = -Wall -Wstrict-prototypes -O3 -fomit-frame-pointer -march=native -mtune=native -msse4a -mmmx

работает нормально

Robotron
()
Ответ на: комментарий от Sylvia

> -O3 не обязательно даст прирост в скорости, хотя размер кода значительно увеличит

+1 Сейчас модно не cpu такты экономить, а кеш.

skwish ★★
()
Ответ на: комментарий от skwish

>+1 Сейчас модно не cpu такты экономить, а кеш.

чушь. даже безусловные переходы в цикле могут сбрасывают кеш-линии, так что "модники", экономящие кеш идут лесом

frame ★★★
()
Ответ на: комментарий от Sylvia

> ссылка в после выше, возможности процессоров, сравните, линейки процессоров АМД и Интел, АМД на шаг позади и велосипеды какие-то изобретают 3dnow, sse4a

amd64, опять же. Точно-точно.

ubber
()

Недавно собирал qt 4.4.2 при помощи sun studio 12, так пришлось целый день убить. Кроме того что пришлось многое руками поправить он банально компилирует ооочень долго.

some_x
()
Ответ на: комментарий от some_x

qt4.5 snapshot 20090221
вместе со всеми examples, demos

Leaving directory `/var/tmp/qt-x11-opensource-src-4.5.0-snapshot-20090221/tools/qdoc3'
3341.97user 218.14system 31:33.55elapsed 188%CPU (0avgtext+0avgdata 0maxresident)k

core2 duo, 3Ghz

Sylvia ★★★★★
()

ой прямо-таки каждый день собираю PHP.

Tu3eK
()
Ответ на: комментарий от Sylvia

make[1]: Leaving directory `/var/tmp/qt-x11-opensource-src-4.5.0-snapshot-20090221/tools/qdoc3'
4076.88user 323.01system 41:36.60elapsed 176%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (4major+88465310minor)pagefaults 0swaps


та же Qt 4.5 , Intel C/C++ 11.0 (-O2 -fomit-frame-pointer -xSSE2)

Sylvia ★★★★★
()
Ответ на: комментарий от ubber

>> что это за входные файлы он требует ?

>Дистрибутив gcc 4.3 и старше.

:-)

именно он у меня не компиллировался из-за какой то ошибки скачивания, мне было не до этого всё время. Да и man у меня оказался отсутствующий.

Похоже настало время привести всё в порядок.

argin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.