LINUX.ORG.RU

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

anonymous
()

BTW, более -O3 вроде gcc не поддерживает, т.е. -O100 или там -O200 сводится к -O3.
Видов оптимизаций не так уж и много в гкк, все описаны в доках и почти начинаются на -f
(-funroll-loops, -fomit-frame-pointer, etc).
Ключи -Ох только их включают (-О1 одни, -О2 те же + несколько новых, and so on)

anonymous
()

Лично я делаю вот так:
CFLAGS="-O9 -fexpensive-optimizations -finline-functions -mpentiumpro -march=i686 -fomit-frame-pointer -fforce-mem -pipe -s"
Стоит отметить, что, действительно, -O9==-O3 для GCC, но оптимизацию так же осуществяет и ассемблер при генерации бинарного файла, а там имеет место быть понятие "количество проходов оптимизации", которое определяется числовым значением x у -Ox. Более 9 ставить нельзя.
Далее, можно бы еще добавить "-fforce-addr", но оно почему-то не желает работать корректно на GCC 2.95.3 (компилятор часто при компиляции хватает сигнал 11 даже на высококачественном железе).
Так же можно бы добавить "-fforce-mem" (на 486-х машинах благодаря этой опции, увеличение fps в Quake I может быть в 2 раза), но в манах ее не рекомендуют использовать с ЛЮБЫМ -Ox.

В версиях других компиляторов (не GCC) параметры оптимизации хотя и могут иметь те же названия, но нести совершенно другой смысл.

На платформах, отличных от х86, оптимизацию более -O2 ставить вообще нельзя, поскольку код будет генериться некорректно.

R00T
()

>> CFLAGS="-O9 -fexpensive-optimizations

>> -finline-functions

Ну-ну:

`-O3'
Optimize yet more. `-O3' turns on all optimizations specified by
`-O2' and also turns on the __`inline-functions'__ option.
gcc 2.95.3 manual, also gcc 3.0 manual

>> -fforce-mem
The `-O2' option turns on this option. (Там же)

>> -pipe

Это, кстати, вообще не оптимизация, влияет только на скорость компиляции, но допустим.

Все хорошо, но о -ffast-math забыл, хотя
This option should never be turned on by any `-O' option since it
can result in incorrect output for programs which depend on an
exact implementation of IEEE or ANSI rules/specifications for math
functions. (Там же)
Но я таких программ не встречал.

>> Стоит отметить, что, действительно, -O9==-O3 для GCC, но оптимизацию так же
>> осуществяет и ассемблер при генерации бинарного файла,
Чего ? 8-[ ]
>> а там имеет место быть понятие "количество проходов оптимизации", которое
>> определяется числовым значением x у -Ox.

Найди мне у as (вообще у любого ассемблера) такую опцию.
"Оптимизирующий ассемблер" - это круто.

>> Более 9 ставить нельзя
А попробовать и убедиться, что таки можно?

>>Далее, можно бы еще добавить "-fforce-addr", но оно почему-то не желает работать корректно на GCC 2.95.3 (компилятор часто при компиляции хватает сигнал 11 даже на высококачественном железе).

У меня с этим ключем все работает. Что я делаю не так? Кстати, в документации об этой "проблеме"2 ни разу не сказано.

>>На платформах, отличных от х86, оптимизацию более -O2 ставить вообще нельзя, поскольку код будет генериться некорректно.

Это где написано?

anonymous
()

2anonymous (*) (2002-06-24 16:45:36.994):
Мда... Онанисты меня всегда потрясают своей безбашенностью.
Ты только маны читаешь? А сопроводительную документацию к GCC - нет? А HOW-TO тоже перестало быть документацией?
В манах пишут только инфу, а вот подробности - в вышеприведенных документах. Ищи и убеждайся сам.

R00T
()

>> ... Онанисты меня всегда потрясают своей безбашенностью.
А меня тролли, то есть взаимно.

>>Ты только маны читаешь?
В том числе.

>> А сопроводительную документацию к GCC - нет?

Это которая? Я вроде ее и цитировал. Есть какая-то еще? Секретная, только для избранных?

>> А HOW-TO тоже перестало быть документацией?

Какие именно how-to? Да, есть хорошие how-to по gcc, например по inline assembly, что в доках по gcc расписано, мягко говоря, неподробно.
И что? Это отменяет доки?

>>В манах пишут только инфу, а вот подробности - в вышеприведенных документах. Ищи и убеждайся сам.

Мне искать опровержения твоих глупостей?
Нет уж, раз ты сказал глупость про оптимизирующий ассемблер - ты и доказывай, чудик.
Один юмор с тобой.

anonymous
()

Да, кстати.
С тебя еще и объяснение, почему оптимизация больше -O2 (-O3) приводит к некорректному коду на не-x86, если сказано, что отличается только тем, что функции инлайнятся.
Итак?

anonymous
()

Опять таки, меня вдруг посетила мысль, что у тебя слово "мануал" (manual) ассоциируется с "man pages" (вызываются командой man).
Это просто объясняет, почему ты написал про чтение мной исключительно "манов", хотя я писал про мануал.
Если это так, иди подучи английский.

Вот, кстати, выдержка (front page) из сопроводительной доки по gcc, что я цитировал:

"This manual documents how to run, install and port the GNU compiler, as well as its new features and incompatibilities, and how to report bugs. It corresponds to GCC version 3.0."

Так что manual != man page. Это тебе для общего развития.

anonymous
()

Бля... Вот ведь Онанист пучеглазый. Возьми, например, сырцы от XFree, KDE и т. п. Там большими буквами (специально, видимо, для таких, как ты) написано: "для Alpha, Sun и т. д. ставим -O2 по дефолту, поскольку большие уровни оптимизации приводят к ошибкам в коде."
Раз ты не соизволил ЭТОГО прочитать - какие вообще у тебя знание есть, красноглазик? Иди учись давай. И читай доки внимательне.
В остальное я тебя не буду тыкать. Просто за недостатком времени.

R00T
()

>> Возьми, например, сырцы от XFree, KDE и т. п. Там большими буквами (специально,
>> видимо, для таких, как ты) написано: "для Alpha, Sun и т. д. ставим -O2 по дефолту,
>> поскольку большие уровни оптимизации приводят к ошибкам в коде."

Да ну? Почему-то я тебе не верю, лодочник:
а) я такого не видел ни разу
б) ты гонишь по другому поводу и не приводишь точных ссылок.
в) у меня полное дерево cvs от xfree; поиск по -O2 дал то, что в некоторых configure скриптах он проставляется _безо всякого объяснения_, что не является доказательством каких-то мифических глюков с ключами больше -O2. Еще есть записи (неоднократные) о багах компилятора с -O2 (охотно верю), но не применительно к x86, а вообще, кроме того, эти баги исправили.
Ну и конечно нет никакого упоминания о багах на не-x86 с -O3 и более.


>> В остальное я тебя не буду тыкать. Просто за недостатком времени.

А я-то думал за недостатком мозгов. Ты бы тыкнул, да только не во что :-)

Ты так и не рассказал об "оптимизирующем ассемблере", а это куда интереснее :-)

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