gcc -o参数优化

编译过程中,gcc使用-O[ptimize]来优化代码。一共有几个level,分别对应不同的优化级别:

  • -O0
  • -O1
  • -O2
  • -O3

简单理解为O0优化度最低,O3优化度最高。默认优化等级是O0,还有一个是-Os,仅仅是优化代码大小。如果设置了多个-O选项,以最后一个为准

详情见文档:

-O

-O1

Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function.With -O, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time.

-O turns on the following optimization flags:

-fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-small-functions -fipa-pure-const -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sra -ftree-ter -funit-at-a-time

-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging.-O2

Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. As compared to -O, this option increases both compilation time and the performance of the generated code.-O2 turns on all optimization flags specified by -O. It also turns on the following optimization flags: -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fexpensive-optimizations -fgcse -fgcse-lm -findirect-inlining -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-switch-conversion -ftree-pre -ftree-vrp

Please note the warning under -fgcse about invoking -O2 on programs that use computed gotos.-O3

Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions-funswitch-loops-fpredictive-commoning-fgcse-after-reload-ftree-vectorize and -fipa-cp-clone options.

-O0

Reduce compilation time and make debugging produce the expected results. This is the default.

-Os

Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.-Os disables the following optimization flags: -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays -ftree-vect-loop-version

Ref



《 “gcc -o参数优化” 》 有 2 条评论

  1. He Has so much life in him but at the same time he is in so much pain and discomfort as he is always trying to urinate throughout the day for a year now what is priligy tablets

  2. or anything other than Proviron to control estrogen for that matter can you buy priligy in usa

回复 agodelo 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825