1. 程式人生 > >gcc優化等級-O0 -O1 -O2 -Os -O3

gcc優化等級-O0 -O1 -O2 -Os -O3

gcc原文網址:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options

-O-O1Optimize. 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:

          -fdefer-pop 
          -fmerge-constants 
          -fthread-jumps 
          -floop-optimize 
          -fif-conversion 
          -fif-conversion2 
          -fdelayed-branch 
          -fguess-branch-probability 
          -fcprop-registers
     

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

-O2Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. The compiler does not perform loop unrolling or function inlining when you specify -O2
. 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:

          -fforce-mem 
          -foptimize-sibling-calls 
          -fstrength-reduce 
          -fcse-follow-jumps  -fcse-skip-blocks 
          -frerun-cse-after-loop  -frerun-loop-opt 
          -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las 
          -fdelete-null-pointer-checks 
          -fexpensive-optimizations 
          -fregmove 
          -fschedule-insns  -fschedule-insns2 
          -fsched-interblock  -fsched-spec 
          -fcaller-saves 
          -fpeephole2 
          -freorder-blocks  -freorder-functions 
          -fstrict-aliasing 
          -funit-at-a-time 
          -falign-functions  -falign-jumps 
          -falign-loops  -falign-labels 
          -fcrossjumping
     

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

-O3Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions-fweb-frename-registers and -funswitch-loops options. 
-O0Do not optimize. This is the default. 
-OsOptimize 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  -fprefetch-loop-arrays
     

If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.


相關推薦

gcc優化等級-O0 -O1 -O2 -Os -O3

gcc原文網址:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options -O-O1Optimize. Optimizing compilation takes

gcc -O0 -O1 -O2 -O3 四級優化選項及每級分別做什麼優化

今天看到了一篇文章,寫的挺好就將其轉載, Gcc 編譯優化簡介 gcc 提供了為了滿足使用者不同程度的的優化需要,提供了近百種優化選項,用來對{編譯時間,目標檔案長度,執行效率}這個三維模型進行不同的取捨和平衡。優化的方法不一而足,總體上將有以下幾類:1)精簡操作指令;

gcc -O0 -O1 -O2 -O3 四級優化選項及每級分別做什麼優化

Gcc 編譯優化簡介gcc 提供了為了滿足使用者不同程度的的優化需要,提供了近百種優化選項,用來對{編譯時間,目標檔案長度,執行效率}這個三維模型進行不同的取捨和平衡。優化的方法不一而足,總體上

GNU編譯優化級別-O -O1 -O2 -O3

轉自:https://blog.csdn.net/hemmingway/article/details/51470486 最近做一個演算法的GPU加速,發現實際上使用gcc的-O3(最高階編譯優化)選項,可以獲得很高的加速比,我的程式裡達到了3倍的樣子,有時效果甚至比GPU加速好。因此小小學

GCC 優化選項 -O1 -O2 -O3 -OS 優先級,-FOMIT-FRAME-POINTER(O3優化很小,只增加了幾條優化而已)

reorder you alias form when must deb off cif 四種編譯優化類型的解釋: `-O ‘ `-O1 ‘ Optimize. Optimizing compilation takes

gcc 優化選項 -O1 -O2 -O3 -Os 優先順序,-fomit-frame-pointer .

少優化->多優化:O0 -->> O1 -->> O2 -->> O3-O0表示沒有優化,-O1為預設值,-O3優化級別最高英文解析:`-O ' `-O1 '                 Optimize.      Optimi

gcc 優化選項 -O1 -O2 -O3 -Os 優先順序,-fomit-frame-pointer

少優化->多優化: O0 -->> O1 -->> O2 -->> O3 -O0表示沒有優化,-O1為預設值,-O3優化級別最高 英文解析: `-O ' `-O1 '                 Optimize.      O

-O1 -O2 -O3 優化的原理是什麽?

-o3 ria moni text 獲取 目的 時間 代碼 設置 一般來說,如果不指定優化標識的話,gcc就會產生可調試代碼,每條指令之間將是獨立的:可以在指令之間設置斷點,使用gdb中的 p命令查看變量的值,改變變量的值等。並且把獲取最快的編譯速度作為它的目標。 當優

GCC -O 優化等級詳解

GCC提供選項控制程式碼的優化等級: 這些選項可以實現不同程度的優化。 沒有任何優化選項的話,編譯器時的目標是降低編譯成本,並使除錯產生預期的結果。語句是獨立的:如果你使程式停止在語句之間設定的斷點處,你可以改變任何變數的值或者改變程式計數器的值使程式執行任意函式中的語句

GCC優化選項:一般的文件裡不容易找到的-Os

在研究編譯驅動的makefile的時候,發現GCC的命令列裡面有一個-Os的優化選項。    遍查GCC文件,發現了-O0, -O1, -O2, -O3,就是沒有發現-Os。    祭出GOOGLE大法搜了一下,終於發現這篇文章說明了-Os的作用:http://www.lin

gcc優化選項解析

函數 sed forward 普通 函數參數 處理器 空間 style war 1 -fno-defer-pop 函數返回的時候,就立即將棧裏面放置的該函數的參數pop出來。這樣可以避免函數參數占用過多的棧空間。 2 -fforward-propagate ? 3 -ffp

keil C51程式碼優化等級介紹

keil優化等級圖示:   0級 Constan folding 常數合併:編譯器預先計算結果,儘可能用常數代替表示式。包括執行地址計算; 優化簡單訪問:編譯器優化訪問8051系統的內部資料和位地址; 跳轉優化:編譯器總是擴充套件跳轉到最終目標,多級跳轉指令被刪除;

KEIL編譯器C語言編譯選項優化等級說明

0 Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization. 近乎不優化,用於除錯程式碼。出

Gcc 優化選項注意事項

Gcc -O0 不優化,-O1 -O2 -O3對程式碼進行了優化,減小目標檔案大小,減小程式碼段及棧空間的大小,同時也會帶來一些意想不到的問題,所以良好的程式設計風格和規範至關重要,避免型別直接來回轉換,進可能用小記憶體表示,而且不同平臺要求4或8位元組對齊。 如: 1、函

keil優化等級設定說明

優化級別說明(僅供參考):則其中的 Code Optimization    欄就是用來設定C51的優化級別。共有9個優化級別(書上這麼寫的),高優化級別中包含了前面所有的優化級別。現將各個級別說明如下:0級優化:1、 常數摺疊:只要有可能,編譯器就執行將表示式化為常數數字

GCC優化選項的各種含義以及潛藏風險

在研究編譯驅動的makefile的時候,發現GCC的命令列裡面有一個-Os的優化選項。     遍查GCC文件,發現了-O0, -O1, -O2, -O3,就是沒有發現-Os。     祭出GOOGLE大法搜了一下,終於發現這篇文章說明了-Os的作用: http://www.linuxjournal.com

IAR中優化等級對Kinetis FGPIO執行速度的影響

在燈光控制、IO模擬Flex Bus等很多應用中,對GPIO的翻轉速度有很高的要求,M0+核心中集成了一個特定的single-cycle I/O port,Kinetis中我們稱之為Fast GPIO(FGPIO)。它可以完成對IO口的單週期load和store,主要的區別

KEIL編譯器【C語言編譯選項優化等級說明】

參考:https://blog.csdn.net/chengdong1314/article/details/53463183KEIL編譯器C語言編譯選項優化等級說明摘錄於:http://blog.csdn.net/conquerwave/article/details/10

vim gdb 除錯及gcc優化

基本的除錯命令 就不說了。 今天收穫了。 gdb 使用while列印陣列 set $i=0 while $i<10 p shuzu[$i] set $i++ end gcc優化 原來經常遇到的-O是優化執行時間的。 自己試了試 -O0 比-O3慢了3倍速度大概,當然