人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

淺談Linux環(huán)境下gcc優(yōu)化級別

發(fā)布日期:2022-05-15 12:01 | 文章來源:站長之家

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

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

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

gcc - o3 這個優(yōu)化屬于非常強大的優(yōu)化,因為編譯器會進行預測,對循環(huán)每一層的預測,以便于將循環(huán)拆分,可以提高執(zhí)行效率。編譯器還會試圖用已有的值來代替未知的值,并且還會用加代替乘,因為運算器的特性,乘法十分復雜耗時。當然o3的缺點最明顯,那就是o3因為試圖預測程序的走向,可能會出現(xiàn)誤差,導致錯誤和程序不可逆轉的走向。所以一般o3不建議使用。
以上就是關于優(yōu)化的三個等級,對于優(yōu)化,系統(tǒng)的優(yōu)化還是機械的,程序員對于語言深刻的理解,巧妙地算法可能會更有意義。

總結

以上就是本文關于淺談Linux環(huán)境下gcc優(yōu)化級別的全部內容,希望對大家有所幫助。歡迎大家繼續(xù)參閱本站其他相關專題,感謝朋友們對本站網(wǎng)站的支持。

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部