日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gcc的优化功能

發布時間:2023/11/30 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gcc的优化功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼優化的目的是改善程序的執行性能。gcc提供的代碼優化功能非常強大,它通過參數-On來控制優化代碼的生成,其中n為優化級別的整數,比較典型的范圍是從0變化到2或3(與版本有關)。

編譯時通過使用選項-O可以告訴gcc同時減小代碼的長度和執行時間,其效果等價于-O1,在這一級別上能夠進行的優化類型雖然取決于目標處理器,但一般都會包括線程跳轉和延遲退棧兩種優化。選項-O2除了完成所有-O1級別的優化外,同時還要進行一些額外的調整工作,如處理器指令調度等。選項O3除了完成所有-O2級別的優化外,還包括循環展開和其他一些與處理器特性相關的優化工作。數字越大優化的等級越高,程序的運行速度更快。一般采用-O2選項,因為它在優化長度、編譯時間和代碼大小之間取得了一個比較理想的平衡點。

借助Linuxtime命令,可以大致統計出該程序在運行時所需要的時間,注意此時最好退出其它程序。

[root@localhost work]# gcc -Wall hello.c -o hello

[root@localhost work]# time ./hello

hello world!

real? 0m0.011s

user 0m0.000s

sys?? 0m0.002s

//優化如下:

[root@localhost work]# gcc -Wall -O hello.c -o hello

[root@localhost work]# time ./hello

?

[root@localhost work]# gcc -Wall -O1 hello.c -o hello

[root@localhost work]# time ./hello

?

[root@localhost work]# gcc -Wall -O2 hello.c -o hello

[root@localhost work]# time ./hello

?

[root@localhost work]# gcc -Wall -O3 hello.c -o hello

[root@localhost work]# time ./hello

real:進程總的執行時間,它和系統負載有關(包括了進程調度,切換的時間)

user:被測量的進程中用戶指令的執行時間(CPU的運行,計算等)

sys:被測量的進程中內核代用戶指令執行的時間,user和sys的和被稱為CPU時間(系統調用消耗的時間)。

注意:盡管gcc的代碼優化功能很強大,但還是要求能夠手工編寫出高質量的代碼(很重要),如果自己編寫的代碼簡潔,邏輯性強,則編譯器就不會做更多的工作,甚至不需要進行優化。而且在一些場合中不允許對代碼進行優化:程序開發的時候,優化等級越高,消耗在編譯的時間上也就越長,因此開發的時候不建議對代碼進行優化,只有軟件開發結束的時候,才考慮對最終代碼進行優化。跟蹤調試的時候,也不建議對代碼進行優化,因為優化可能會使某些代碼被刪除或改寫,或者重組,從而使跟蹤和調試變得異常困難。

總結

以上是生活随笔為你收集整理的gcc的优化功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。