久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

gcc/g++ 優(yōu)化標(biāo)識 -O1 -O2 -O3 -Os -Ofast -Og的作用

 lichwoo 2025-01-08 發(fā)布于中國香港

注意:用GDB調(diào)試的時候需要關(guān)閉優(yōu)化選項

當(dāng)優(yōu)化標(biāo)識被啟用之后,,gcc編譯器將會試圖在不改變程序語義的情況下改變程序的結(jié)構(gòu),
以滿足代碼大小最小或運(yùn)行速度更快等目標(biāo)

內(nèi)容摘自:Options That Control Optimization

1. -O,,-O1

這兩個命令的效果是一樣的,,目的都是在不影響編譯速度的前提下,盡量采用一些優(yōu)化算法降低代碼大小和可執(zhí)行代碼的運(yùn)行速度,。并開啟如下的優(yōu)化選項:

-fauto-inc-dec 
-fbranch-count-reg 
-fcombine-stack-adjustments 
-fcompare-elim 
-fcprop-registers 
-fdce 
-fdefer-pop 
-fdelayed-branch 
-fdse 
-fforward-propagate 
-fguess-branch-probability 
-fif-conversion2 
-fif-conversion 
-finline-functions-called-once 
-fipa-pure-const 
-fipa-profile 
-fipa-reference 
-fmerge-constants 
-fmove-loop-invariants 
-freorder-blocks 
-fshrink-wrap 
-fshrink-wrap-separate 
-fsplit-wide-types 
-fssa-backprop 
-fssa-phiopt 
-fstore-merging 
-ftree-bit-ccp 
-ftree-ccp 
-ftree-ch 
-ftree-coalesce-vars 
-ftree-copy-prop 
-ftree-dce 
-ftree-dominator-opts 
-ftree-dse 
-ftree-forwprop 
-ftree-fre 
-ftree-phiprop 
-ftree-sink 
-ftree-slsr 
-ftree-sra 
-ftree-pta 
-ftree-ter 
-funit-at-a-time

2. -O2

該優(yōu)化選項會犧牲部分編譯速度,,除了執(zhí)行-O1所執(zhí)行的所有優(yōu)化之外,還會采用幾乎所有的目標(biāo)配置支持的優(yōu)化算法,,用以提高目標(biāo)代碼的運(yùn)行速度

-fthread-jumps 
-falign-functions  -falign-jumps 
-falign-loops  -falign-labels 
-fcaller-saves 
-fcrossjumping 
-fcse-follow-jumps  -fcse-skip-blocks 
-fdelete-null-pointer-checks 
-fdevirtualize -fdevirtualize-speculatively 
-fexpensive-optimizations 
-fgcse  -fgcse-lm  
-fhoist-adjacent-loads 
-finline-small-functions 
-findirect-inlining 
-fipa-cp 
-fipa-cp-alignment 
-fipa-bit-cp 
-fipa-sra 
-fipa-icf 
-fisolate-erroneous-paths-dereference 
-flra-remat 
-foptimize-sibling-calls 
-foptimize-strlen 
-fpartial-inlining 
-fpeephole2 
-freorder-blocks-algorithm=stc 
-freorder-blocks-and-partition -freorder-functions 
-frerun-cse-after-loop  
-fsched-interblock  -fsched-spec 
-fschedule-insns  -fschedule-insns2 
-fstrict-aliasing -fstrict-overflow 
-ftree-builtin-call-dce 
-ftree-switch-conversion -ftree-tail-merge 
-fcode-hoisting 
-ftree-pre 
-ftree-vrp 
-fipa-ra

3. -O3

該選項除了執(zhí)行-O2所有的優(yōu)化選項之外,,一般都是采取很多向量化算法,提高代碼的并行執(zhí)行程度,,利用現(xiàn)代CPU中的流水線,,Cache等

-finline-functions      // 采用一些啟發(fā)式算法對函數(shù)進(jìn)行內(nèi)聯(lián)
-funswitch-loops        // 執(zhí)行循環(huán)unswitch變換
-fpredictive-commoning  // 
-fgcse-after-reload     //執(zhí)行全局的共同子表達(dá)式消除
-ftree-loop-vectorize   // 
-ftree-loop-distribute-patterns
-fsplit-paths 
-ftree-slp-vectorize
-fvect-cost-model
-ftree-partial-pre
-fpeel-loops 
-fipa-cp-clone options

4. -Os

這個優(yōu)化標(biāo)識和-O3有異曲同工之妙,當(dāng)然兩者的目標(biāo)不一樣,,
-O3的目標(biāo)是寧愿增加目標(biāo)代碼的大小,,也要拼命的提高運(yùn)行速度,
但是這個選項是在-O2的基礎(chǔ)之上,,盡量的降低目標(biāo)代碼的大小,,這對于存儲容量很小的設(shè)備來說非常重要。
為了降低目標(biāo)代碼大小,,會禁用下列優(yōu)化選項,,一般就是壓縮內(nèi)存中的對齊空白(alignment padding)

-falign-functions  
-falign-jumps  
-falign-loops 
-falign-labels
-freorder-blocks  
-freorder-blocks-algorithm=stc 
-freorder-blocks-and-partition  
-fprefetch-loop-arrays

5. -Ofast

該選項將不會嚴(yán)格遵循語言標(biāo)準(zhǔn),除了啟用所有的-O3優(yōu)化選項之外,,也會針對某些語言啟用部分優(yōu)化,。如:-ffast-math ,對于Fortran語言,,還會啟用下列選項

-fno-protect-parens 
-fstack-arrays

6.-Og

優(yōu)化調(diào)試體驗(yàn),。 -Og應(yīng)該是標(biāo)準(zhǔn)edit-compile-debug周期的優(yōu)化級別選擇,
在保持快速編譯和良好調(diào)試體驗(yàn)的同時,,提供合理的優(yōu)化級別,。
用于生成可調(diào)試代碼,因?yàn)槟承┦占{(diào)試信息的編譯器通道在以下位置被禁用 -O0,。
像-O0 -Og完全禁用了許多優(yōu)化過程,,因此控制它們的單個選項無效。除此以外-Og 使所有 -O1 優(yōu)化標(biāo)志,,但那些可能會干擾調(diào)試的標(biāo)志除外:

-fbranch-count-reg  
-fdelayed-branch 
-fdse  
-fif-conversion  
-fif-conversion2  
-finline-functions-called-once 
-fmove-loop-invariants  
-fssa-phiopt 
-ftree-bit-ccp  
-ftree-dse  
-ftree-pta  
-ftree-sra

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約