北京做網(wǎng)站制作的公司哪家好網(wǎng)上營銷
請閱讀【嵌入式開發(fā)學習必備專欄 】
文章目錄
- GCC 編譯優(yōu)化概述
- 常用優(yōu)化等級
- -O1 打開的優(yōu)化選項
- -O2 打開的優(yōu)化選項
- -O3 打開的優(yōu)化選項
- -Os 打開的優(yōu)化選項
- 優(yōu)化技術(shù)
- 使用優(yōu)化選項的注意事項

GCC 編譯優(yōu)化概述
GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fortran、Ada和Go等語言的編譯器。在編譯過程中,GCC提供了多種優(yōu)化選項,用于提高生成代碼的性能,減少可執(zhí)行文件的大小,或者在這兩者之間尋求平衡。優(yōu)化的方法不一而足,總體上將有以下幾類:
- 精簡操作指令;
- 盡量滿足cpu的流水操作;
- 通過對程序行為地猜測,重新調(diào)整代碼的執(zhí)行順序;
- 充分使用寄存器;
- 對簡單的調(diào)用進行展開等等。
GCC 提供了從O0-O3以及Os這幾種不同的優(yōu)化級別供大家選擇,在這些選項中,包含了大部分有效的編譯優(yōu)化選項,并且可以在這個基礎上,對某些選項進行屏蔽或添加,從而大大降低了使用的難度。以下是GCC編譯優(yōu)化的詳細介紹:
常用優(yōu)化等級
-
-O0: 不做任何優(yōu)化,這是默認的編譯選項。
- 不進行優(yōu)化。
- 編譯速度最快。
- 通常用于調(diào)試,因為它保留了所有的調(diào)試信息并且每一行代碼都可以直接對應到生成的機器代碼。
-
-O1:
- 啟用基本優(yōu)化。
- 嘗試減少代碼大小和執(zhí)行時間,不會顯著增加編譯時間。
- 可用于提高程序性能同時保持較好的編譯速度。
-
-O2:
- 進行進一步優(yōu)化。
- 包含幾乎所有不涉及空間-時間權(quán)衡的優(yōu)化。
- 通常為發(fā)布版本推薦的優(yōu)化級別。
-
-O3:
- 啟用更多的優(yōu)化,包括-O2中的優(yōu)化以及其他提高性能的優(yōu)化。
- 可能會使得編譯出來的程序體積變大。
- 適用于對性能要求極高的程序。
-
-Os:
- 優(yōu)化生成的代碼大小。
- 執(zhí)行適合在代碼大小和執(zhí)行時間之間進行權(quán)衡的所有優(yōu)化。
-
-Ofast:
- 最大程度優(yōu)化