從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 –