2010-11-24 2 views
2

Я нашел много опций оптимизации hereВ основном используются варианты оптимизации gcc?

Пройдя через них, я обнаружил, что некоторые из них имеют побочные эффекты (например, делает невозможной отладку). По моему опыту я нашел от -O1 до -O3 и -Os наиболее часто используемые. Но каковы другие варианты, которые обычно используются в ваших проектах?

+0

http://stackoverflow.com/questions/3375697/useful-gcc-flags-for-c – karlphillip 2010-11-24 12:55:01

ответ

3

-ffast-math может оказать значительное влияние на работу с программным обеспечением с плавающей запятой.

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

+0

Следует отметить, что эта опция ужасно нарушает соответствие IEEE 754 и должна использоваться только в том случае, если вы уверены, что все в порядке. На практике это означает, что это нормально использовать, если вы обрабатываете числа с плавающей запятой как случайные плохие аппроксимации действительных чисел, но не в том случае, если вы используете их каким-либо точным способом. – 2010-11-24 16:21:19

+0

Нет, не его снова ;-) На мой взгляд, программное обеспечение, основанное на различиях в реализации IEEE754 -ffast-math и без, можно считать разбитым. Потому что он полагается на точное сравнение поплавков. -fno-fast-math сделает вашу программу никоим образом не более «точной», или поплавки не будут более «точными». То, что он будет делать, это изменить поведение NaN, и если ваше программное обеспечение имеет много из них, у вас больше проблем. Существует одно исключение: программное обеспечение, которое содержит некоторые функции IEEE754, такие как isNaN() (которые на самом деле никогда не используются, когда-либо), наиболее часто встречающиеся в интерпретаторах, таких как python или mysql. – hirschhornsalz 2010-11-25 08:38:23

1

-march=native с последними версиями gcc устраняет всю головную боль при определении платформы, на которой вы компилируете.

Смежные вопросы