2015-04-19 8 views
0

Я попытался оптимизировать код C с помощью gcc. Если я использую -O1 вариант будет иметь лучшее время работы, но если я использую эквивалентПараметры оптимизации компилятора GCC

-fauto-inc-dec 
    -fcompare-elim 
    -fcprop-registers 
    -fdce 
    -fdefer-pop 
    -fdelayed-branch 
    -fdse 
    -fguess-branch-probability 
    -fif-conversion2 
    -fif-conversion 
    -fipa-pure-const 
    -fipa-profile 
    -fipa-reference 
    -fmerge-constants 
    -fsplit-wide-types 
    -ftree-bit-ccp 
    -ftree-builtin-call-dce 
    -ftree-ccp 
    -ftree-ch 
    -ftree-copyrename 
    -ftree-dce 
    -ftree-dominator-opts 
    -ftree-dse 
    -ftree-forwprop 
    -ftree-fre 
    -ftree-phiprop 
    -ftree-slsr 
    -ftree-sra 
    -ftree-pta 
    -ftree-ter 
    -funit-at-a-time 

его, как я не использовал флаг опций. Версия GCC - 4.8.2. Пожалуйста, кто может объяснить мне почему? Я просто нашел, что порядок этих флагов имеет значение, но я не нашел, какой порядок находится в -O1.

+0

Удалите сообщение из командной строки, пожалуйста, –

+0

-fomit-frame-pointer * можно * также включить. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html –

+0

и почему это даже имеет значение? хотите ли вы специально исключить любой из флагов? –

ответ

6

Согласно документации,

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

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html (курсив мой)


Когда он продолжает перечислять определенные флаги, которые вы можете установить, он отмечает:

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

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

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