一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 淺談Linux環境下gcc優化級別

淺談Linux環境下gcc優化級別

2021-06-04 14:13yanghan1233 Linux

這篇文章主要介紹了Linux環境下gcc優化級別,涉及gcc系列的相關內容,具有一定參考價值,需要的朋友可以了解下。

代碼優化可以說是一個非常復雜而又非常重要的問題,以筆者多年的linux c開發經驗來說優化通常分為兩個方面,一是人為優化,也就是基于編程經驗采用更簡易的數據結構函數等來降低編譯器負擔,二是采用系統自帶的優化模式,也就是gcc - o系列,下面我將簡述一下各級優化的過程以及實現。

gcc - o1 首先o1上面還有一個o0,那個是不提供任何優化,項目中幾乎不會使用,而o1使用就非常廣泛了,o1是最基本的優化,主要對代碼的分支,表達式,常量來進行優化,編譯器會在較短的時間下將代碼變得更加短小,這樣體積就會變得更小,會減少內存的占用率,在操作系統進行內存調度時就會更快。但是事情沒有絕對的優點,當一個龐大的程序被拆碎細分的話,內存占用會大大增加,由于當今系統大多數都是多線程,就會出現卡頓和反應延遲。

gcc - o2 這個優化級別是o1的進階,在上一級的基礎上會進行更嚴格的細分,最重要的是加入了寄存器的使用。寄存器是cpu中重要的組成部分,此外還有運算器和控制器,計算機顧名思義,要進行各種龐雜的計算,由于cpu速度較快,所以計算的中間結果都會保存在寄存器中,這樣可以大大提高系統的效率,但是寄存器造價高昂,數量有限,所以一般來說程序不會放在寄存器中,另一種將代碼放在寄存器的方式是使用register修飾變量,適用于頻繁調用的變量。

gcc - o3 這個優化屬于非常強大的優化,因為編譯器會進行預測,對循環每一層的預測,以便于將循環拆分,可以提高執行效率。編譯器還會試圖用已有的值來代替未知的值,并且還會用加代替乘,因為運算器的特性,乘法十分復雜耗時。當然o3的缺點最明顯,那就是o3因為試圖預測程序的走向,可能會出現誤差,導致錯誤和程序不可逆轉的走向。所以一般o3不建議使用。

以上就是關于優化的三個等級,對于優化,系統的優化還是機械的,程序員對于語言深刻的理解,巧妙地算法可能會更有意義。

總結

以上就是本文關于淺談Linux環境下gcc優化級別的全部內容,希望對大家有所幫助。歡迎大家繼續參閱本站其他相關專題,感謝朋友們對服務器之家網站的支持。

原文鏈接:http://blog.csdn.net/yanghan1233/article/details/51201967

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 调教全程肉动画片在线观看 | 欧美日韩中文国产一区 | 亚洲同性男男gay1069 | 欧美成人三级伦在线观看 | 污文啊好棒棒啊好了 | japan孕妇孕交freehd | 亚洲精品永久免费 | 高清视频大片免费观看 | 天堂日韩 | 精品午夜久久网成年网 | 精品综合久久久久久8888 | 369手机看片| 成人看片免费无限观看视频 | 福利一区在线观看 | 黄色大片三级 | 国产黄色大片网站 | 撕开老师的丝袜白丝扒开粉嫩的小 | 成人国产在线视频 | 日本高清免费不卡在线播放 | 日产乱码卡1卡2卡三免费 | 青青草原国产在线 | 欧美人与禽杂交大片 | 国色天香视频完整版 | 国产91无毒不卡在线观看 | 国产高清不卡码一区二区三区 | 欧美精品综合一区二区三区 | 91精品国产91久久久久 | 国产美女亚洲精品久久久久久 | kk4kk免费毛片 | 精品国产一区二区三区在线观看 | 亚洲欧美日韩中文字幕久久 | 九九热在线视频观看这里只有精品 | 成人在线观看视频免费 | 久草热在线 | 天堂va在线高清一区 | 国产91在线九色 | 国产高清在线看 | 青青草国产精品久久久久 | 99久久99热久久精品免费看 | 亚洲乱码一区二区三区国产精品 | 无人区在线观看免费完整版免费 |