LINUX.ORG.RU

GCC 4.6.0

 , ,


0

1

Вышла новая версия GNU Compiler Collection — 4.6.0.

Новшества:

  • улучшения в использовании памяти и скорости компиляции;
  • поддержка языка программирования Go;
  • новый уровень оптимизации -Ofast, который включает в себя все ключи из -O3 и ключи, позволяющие получить ещё более оптимизированный код, например -ffast-math;
  • улучшения в LTO (Link-Time Optimization);
  • улучшения в IPO (межпроцедурная оптимизация);
  • на 32-х битных системах теперь по умолчанию задействован ключ -fomit-frame-pointer (кроме -Os).

Добавлена поддержка следующих процессоров:

  • Intel Core i3/i5/i7 (-march=corei7, -mtune=corei7);
  • Intel Core i3/i5/i7 с новым набором инструкций — AVX (-march=corei7-avx, -mtune=corei7-avx);
  • AMD Bobcat (-march=btver1, -mtune=btver1).

Анонс

>>> Полный список изменений

★★★★

Проверено: hibou ()
Последнее исправление: post-factum (всего исправлений: 7)

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

PS:
GCC 4.6 -O2
Dict Compressing | Decompressing
Speed Usage R/U Rating | Speed Usage R/U Rating
KB/s % MIPS MIPS | KB/s % MIPS MIPS

22: 4623 171 2627 4497 | 58645 197 2682 5295
23: 4456 178 2556 4541 | 57527 195 2694 5267


GCC 4.6 -O3 -flto

KB/s % MIPS MIPS | KB/s % MIPS MIPS

22: 4279 162 2577 4163 | 57500 198 2622 5191
23: 4405 175 2564 4488 | 52000 181 2626 4761

собственно не все флаги одинаково полезны

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

Проблема в поддержке нерабочих параметров компилятора и в поощрении их использования неразумными разработчиками.

bbk123 ★★★★★
()
Ответ на: Подскажите от wingear

С какой литературы начинать ликбез, чтобы понять, что -o3 - не нужно?

Если бы -O3 было не нужно, его бы не применяли. Для многих небольших проектов применение -O3 даёт небольшое, но стабильное ускорение.

Vudod ★★★★★
()

Если я соберу систему с -msse4.2, она нормально будет работать на процессорах core 2, поддерживающих только sse4.1?

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

Одно дело собирать с -O3 свой проект, который ты можешь в любой момент в случае чего пересобрать, но совсем другое дело собирать с -O3 всю систему.

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

>Если я соберу систему с -msse4.2, она нормально будет работать на процессорах core 2, поддерживающих только sse4.1?

Хороший вопрос уже содержит ответ :)

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

говори за себя у всех нормальных гентушнегов уже давным давно 4.5

Вот потому у Вас О3 и глючит, я извиняюсь, нормальный Вы наш. Станьте на путь истины, на стабильном багов нет. Истину глаголю - лучше скорость, чем новые глюки.

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

Одно дело собирать с -O3 свой проект, который ты можешь в любой момент в случае чего пересобрать, но совсем другое дело собирать с -O3 всю систему.

Человек утверждал, что -O3 не нужно, не уточнялось в какой связи. Для всей системы это действительно безумие. Более того, даже что-то одно, но большое, типа ООо, я бы не рискнул собирать с этим ключом, потому что потом возможны любые глюки и вылеты.

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

Причём тут твоя «реальная работа». Ты говорил, что с -O3 скорость выше, чем с -O2 (если я тебя правильно понял). Так вот, это не так.

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

Причём тут твоя «реальная работа». Ты говорил, что с -O3 скорость выше, чем с -O2 (если я тебя правильно понял). Так вот, это не так.

Вам к Мегабаксу и к 3-4 странице данной темы. Там я специально не поленился тест провел.

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

> Вам к Мегабаксу и к 3-4 странице данной темы. Там я специально не поленился тест провел.
Это там, где ты делал тесты в заранее некорректных условиях, да ещё и на архиваторе (есличо, для архиваторов и кодеков как раз советуют -O3)? Да, очень крутой тест, просто охрененный.

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

Это там, где ты делал тесты в заранее некорректных условиях, да ещё и на архиваторе (есличо, для архиваторов и кодеков как раз советуют -O3)? Да, очень крутой тест, просто охрененный.

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

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

Ок, если вы хотите нормальных тестов, как минимум, делайте их в tmpfs. И не надо про «сферических коней» и прочее.
Можете попробовать собрать qt с -O2 и -O3. Скрипт для проверки назывался, вроде, qtperf.
Впрочем, если вам нравится кушать -O3 system-wide, наздоровье, я здесь не для того, чтобы вас переубеждать.

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

Ок, если вы хотите нормальных тестов, как минимум, делайте их в tmpfs. И не надо про «сферических коней» и прочее.

Как только я куплю 16+гб ОЗУ и перенесу систему туда, сразу же попробую.

Можете попробовать собрать qt с -O2 и -O3. Скрипт для проверки назывался, вроде, qtperf.

diver@localhost:~$ eix qtper
No matches found.
diver@localhost:~$ eix qtpre
No matches found.
diver@localhost:~$ 

Уточните пожалуйста чем проверять. Я как раз сижу на КДЕ, лишняя производительность бы не помешала.

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

> Как только я куплю 16+гб ОЗУ и перенесу систему туда, сразу же попробую.
Почему мне для проверки того же gzip хватает и 2ГиБ?

Уточните пожалуйста чем проверять. Я как раз сижу на КДЕ, лишняя производительность бы не помешала.

В оверлее stuff есть. Если не хотите его подключать, можно и отсюда (http://www.corecrowd.com/qtperf.tar.bz2) взять.

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

>есличо, для архиваторов и кодеков как раз советуют -O3

Чо? o_0

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

devl547 ★★★★★
()
Ответ на: комментарий от tmpusr
Почему мне для проверки того же gzip хватает и 2ГиБ?

А чтобы понять, что секс по сути фигня - достаточно подро*неразборчиво*.

Давайте лучше что-нибудь из репо, хотя бы на отдельные приложения тесты. Есть идеи как проверить? Я не параноик, но все же.

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

>это про правилах форума аль о некрофилах?

про маководов и фрибсдшников

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

>первое - они не соответствуют реальности

т.е. результаты завышены? или не работает совсем?

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

третье - ты уверен что тормоза в сжатии

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

ну и хотя бы такой факт, что zlib изначально была написана специально для PNG

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

>ну а -O3 пожалуйста тестируйте сами и собирайте с ним... ежели хотите, только на возможные глюки пеняйте потом на себя.

я на ppc сталкивался со случаями, когда -O2 приводил к ошибке компиляции, а с -O3 все собиралось и работало

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

кстати, в gzip asm386 написаный туда вручную немного отстает от кода написанного на си и скомпилированного современным GCC под архитектуру процессора, так что ручной asm ручному asmу рознь )

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

а в том же libavcodec просто дофига ассемблера под все виды sseX

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

нет )
есть смысл собирать им отдельные пакеты, с библиотеками - осторожно, смесь 4.3 + выше в atk,gtk,pango,firefox приводит к падениям ФФ )

а в том же libavcodec просто дофига ассемблера под все виды sseX


я про asm386 , без SSE и даже без MMX и 3DNow!

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

>Если я соберу систему с -msse4.2, она нормально будет работать на процессорах core 2, поддерживающих только sse4.1?

скорее всего вообще не будет работать

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

зависит от степени использования инструкций SSE4.2
в любом случае , даже одна программа вылетающая по illegal instruction это уже нехорошо )

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

кто сказал что -O3 у меня глючит? о_О

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

а чем тебя qtperf не устроил?
или ты боишься оверлеев?
на оф-репах ни в одном дистре нормально не прожить

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

Я думал, что не имеет значения, какие sse включены - если процессор не может, инструкции просто не используются.

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

нет, будет вылет с illegal instruction, в случае если инструкция была использована без проверки ее наличия, в случае ассемблерных вставок , там на самом деле если процессор не может, то они не используются, т.к. при проверке процессора (cpuid) подставляется альтернатива

т.е. реально можно использовать на AMD (там нет SSSE3) USE=ssse3 поскольку весь код там работает через cpuid, но нельзя -mssse3 (-O3, -ftree-vectorize, отчасти -mfpmath=sse) и -mno-ssse3 тоже нельзя :) поскольку это запретит вставки кода, может не собраться qt-gui или mplayer например, по qt-gui были темы наступивших на грабли

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

# MAKEOPTS=-j1 CC=cc46 CFLAGS="-O3 -msse4.2 -mavx" emerge -1v python:3.1

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

/bin/sh: line 1: 8833 Illegal instruction
LD_LIBRARY_PATH=/var/tmp/portage/dev-lang/python-3.1.3-r1/work/Python-3.1.3: CC='cc46 -pthread' LDSHARED='cc46 -pthread -shared' LDFLAGS='-s -Wl,-O1 -Wl,--as-needed -L.' CFLAGS=' -O3 -msse4.2 -mavx -fwrapv -DNDEBUG ' ./python -E ./setup.py build


собственно вот, он не работает
# objdump -D libpython3.1.so.1.0 |grep ymm
14c0df: c5 c7 c6 c3 45 vshufps $0x45,%ymm3,%ymm7,%ymm0
152c31: c5 c7 c6 c3 44 vshufps $0x44,%ymm3,%ymm7,%ymm0
165373: c5 c7 c6 c3 48 vshufps $0x48,%ymm3,%ymm7,%ymm0

вот они AVX )

если попробовать собрать с SSE4.2 то будет так
# analyze-x86 libpython3.1.so
instructions:
cpuid: 0 nop: 6337 call: 22556 count: 300712
i686: 937
mmx: 160
sse: 8
sse2: 2063
sse3: 1
ssse3: 198
sse4.1: 439

т.е. он собирается и работает, SSE4.2 в нем нет

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

а чем тебя qtperf не устроил? или ты боишься оверлеев? на оф-репах ни в одном дистре нормально не прожить

Не Вы ли утверждали, что на О3 только самоубийца может сидеть?

Вы бы еще сказали, что ни один дистрибутив не может прожить без дополнительно установленной винды рядом.

Да, оверлейи у меня были, целых два - верлихаб(которого в репо нет и который нужен в очень спецфическом случае, а никак не рядовому пользователю) и фаерфокс4, которого тоже в репо не было. Теперь оверлей один. Я очень не люблю захламлять систему. У меня даже точное количество пакетов в системе, выше которого я стараюсь не выходить. Чего, кстати, и вам советую - соблюдайте правила гигиены и все будет работать.

Так что я лучше по одной программе проверю, чем буду добавлять оверлей.

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

>Я очень не люблю захламлять систему

У меня даже точное количество пакетов в системе, выше которого я стараюсь не выходить

вот это трава ^_^

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

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

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

да - на этом разговор можно заканчивать
я не настолько упорот - мне тебя просто не понять

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

я не настолько упорот - мне тебя просто не понять

Понятно: Сам дурак. Попробуйте всетаки подойти к ситуации более объективно и хотя бы подумать над моим советом.

Вопрос в силе - как штатными методами протестировать систему?

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

> Вопрос в силе - как штатными методами протестировать систему?
time.
Но это разве что для архиваторов.
Иначе никак.
Так что мешает вам собрать qtperf где-нибудь в хомяке?

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