我在makefile中看到了这个标志.它是什么意思,什么时候应该使用?
优化级别2.
来自GCC手册页:
-O1优化.优化编译需要更多时间,并且大型函数需要更多内存.
-O2优化甚至更多.GCC几乎执行所有支持的优化,不涉及空速 - 权衡.指定-O2时,编译器不执行循环展开或函数内联.与-O相比,此选项增加了编译时间和生成代码的性能.
-O3优化更多.-O3打开-O2指定的所有优化,并打开-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reload和-ftree-vectorize选项.
-O0减少编译时间并使调试产生预期结果.这是默认值.
-Os优化尺寸.-Os启用所有通常不会增加代码大小的-O2优化.它还执行旨在减少代码大小的进一步优化.
优化级别2,最大值为3.请参阅:http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
请注意,在几年前-O3
,通过过度"优化"代码可能会导致一些故障.AFAIK,现代版GCC不再适用.但惯性,-O2
被认为是"最安全".