从gcc5.4 documentation的效果,它说GCC,比较使用-02和使用所有的优化标记它打开
-02开启由-O指定的所有优化标志。这也开启了以下优化标志:
-fthread跳动 -falign-功能-falign跳动 -falign-循环-falign-标签 -fcaller,节省 -fcrossjumping -fcse跟随跳动等
看来,使用-O2具有相同的效果,使用gcc 5.4.0中的-O2开启的所有83个优化标志对测试程序的性能。
不过,我比较由
GCC-5.4 -02 test.c的-o test1的
和
获得的可执行文件TEST1和TEST2的运行时间gcc-5.4 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim ... -fthread-jumps -falign-functions ...(全部83个标记)test.c -o test2
我测试了20个随机生成的c程序,并运行了每个测试用例100000次,以确保测量运行时间足够准确。 但结果是使用-O2平均比使用所有83个标志快60%左右。
我真的很困惑为什么使用-O2的效果不等同于使用所有打开的优化标志。我不得不误解任何解释,我会很感激任何帮助。非常感谢。
https://gcc.gnu.org/wiki/FAQ#Is_-O1_.28-O2.2C-O3_or_-Os.29_equivalent_to_individual_-foptimization_options.3F –