LINUX.ORG.RU

Оптимизация при компиляции


0

0

Собираю пакеты полностью под себя и поэтому решил их под процессор оптимизировать. У меня Celeron 1.7 GHz. Почитал статьи и вот какие опции, как я понял лучше использовать:

-O3 -pipe -march=i686 -mcpu=i686 -fomit-frame-pointer -fno-exceptions
-funroll-loops -mfpmath=sse -mmmx (-msse || -msse2)

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

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

Почему Вы так думаете? Алексей Федорчук писал как-то, что вместо pentium4 лучше писАть именно i686. А почему вдруг mcpu нужно выкинуть?

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

Лучший код получается при -march=i686 -mcpu=athlon-xp.

anonymous
()
Ответ на: комментарий от php-coder

Потому что установка -march подразумевает использование инструкций соответствующего -mcpu, и ручная постановка совершенно излишня.

Если включишь -march=pentium4, то всё эти mmx/sse можно выкинуть.

-funroll-loops тоже сомнительная вещь.

Вообще, я гляжу некоторые товарищи помешаны на мысли о том, как чудесно оптимизация повлияет на скорость работы :)

Demetrio ★★★★★
()
Ответ на: комментарий от php-coder

>>>>>>>>>>>>>>>>>
>Почему Вы так думаете? Алексей Федорчук писал как-то, что вместо pentium4 лучше писАть именно i686.
>>>>>>>>>>>>>>>>>

Ну не знаю, мне чисто интуитивно кажется, что лучше оптимизировать под конкретно ваш pentium4 (pentium4 - 1/2*cache = celeron), чем под какой-то абстрактный i686.

>>>>>>>>>>>
>А почему вдруг mcpu нужно выкинуть?
>>>>>>>>>>>

man gcc:
"Moreover, specifying -march=cpu-type implies -mcpu=cpu-type."

AnnaKonda
()

> -fno-exceptions

выкинь нафиг.

Spectr ★★★
()

Если не критично выравнивание элементов структур то можно добавить

ALIGN = 32

-funroll-loops -fprefetch-loop-arrays -fmove-all-movables -freduce-all-givs -frerun-loop-opt -fschedule-insns2 -fno-strength-reduce -fexpensive-optimizations -frename-registers -malign-double -falign-loops=$(ALIGN) -falign-jumps=$(ALIGN) -falign-functions=$(ALIGN) -falign-labels=$(ALIGN)

(часть опций уже включена в -O3)

PS: Под целик(P4) ставь -march=pentium4

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