久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    gcc/g++ 優化標識 -O1 -O2 -O3 -Os -Ofast -Og的作用

     lichwoo 2025-01-08 發布于中國香港

    注意:用GDB調試的時候需要關閉優化選項

    當優化標識被啟用之后,gcc編譯器將會試圖在不改變程序語義的情況下改變程序的結構,
    以滿足代碼大小最小或運行速度更快等目標

    內容摘自:Options That Control Optimization

    1. -O,-O1

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

    -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

    該優化選項會犧牲部分編譯速度,除了執行-O1所執行的所有優化之外,還會采用幾乎所有的目標配置支持的優化算法,用以提高目標代碼的運行速度

    -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

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

    -finline-functions      // 采用一些啟發式算法對函數進行內聯
    -funswitch-loops        // 執行循環unswitch變換
    -fpredictive-commoning  // 
    -fgcse-after-reload     //執行全局的共同子表達式消除
    -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

    這個優化標識和-O3有異曲同工之妙,當然兩者的目標不一樣,
    -O3的目標是寧愿增加目標代碼的大小,也要拼命的提高運行速度,
    但是這個選項是在-O2的基礎之上,盡量的降低目標代碼的大小,這對于存儲容量很小的設備來說非常重要。
    為了降低目標代碼大小,會禁用下列優化選項,一般就是壓縮內存中的對齊空白(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

    該選項將不會嚴格遵循語言標準,除了啟用所有的-O3優化選項之外,也會針對某些語言啟用部分優化。如:-ffast-math ,對于Fortran語言,還會啟用下列選項

    -fno-protect-parens 
    -fstack-arrays
    

    6.-Og

    優化調試體驗。 -Og應該是標準edit-compile-debug周期的優化級別選擇,
    在保持快速編譯和良好調試體驗的同時,提供合理的優化級別。
    用于生成可調試代碼,因為某些收集調試信息的編譯器通道在以下位置被禁用 -O0。
    像-O0 -Og完全禁用了許多優化過程,因此控制它們的單個選項無效。除此以外-Og 使所有 -O1 優化標志,但那些可能會干擾調試的標志除外:

    -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
    

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      主站蜘蛛池模板: 欧美福利电影A在线播放| 好男人社区影视在线WWW| 亚洲制服丝袜中文字幕在线| 国产日产欧产精品精乱了派 | 无码AV动漫精品一区二区免费| 精品超清无码视频在线观看| 亚洲欧美日韩成人综合一区| 亚洲国产精品久久一线不卡| 人妻少妇偷人无码视频| 一本色道久久88亚洲精品综合| 精品人妻中文字幕在线| 国产很色很黄很大爽的视频| 国产av中文字幕精品| 欧美孕妇变态孕交粗暴| 国产成人不卡一区二区| 无码AV动漫精品一区二区免费 | 国产欧美久久一区二区三区| 少妇上班人妻精品偷人| 国产激情视频一区二区三区| 中国女人熟毛茸茸A毛片| 亚洲AV伊人久久综合密臀性色 | 12裸体自慰免费观看网站| 亚洲成人资源在线观看| 国产精品日本一区二区在线播放| 亚洲av日韩在线资源| 人妻丰满熟妇AV无码区动漫 | 国产香蕉尹人在线视频你懂的| 亚洲欧洲一区二区精品| 久久午夜无码鲁丝片| 夜夜影院未满十八勿进| 人妻少妇偷人精品一区| 精品人妻中文无码AV在线| 国产在线高清视频无码| 国产情侣激情在线对白| 精品国产一区二区三区av性色| 无码一区二区三区AV免费| 欧美福利电影A在线播放| 福利视频一区二区在线| 欧美性受XXXX黑人XYX性爽| 国产好大好硬好爽免费不卡 | 精品人妻中文无码AV在线|