- 軟件系統(tǒng)優(yōu)化
- 郭健美 黃波 劉通宇 林曉東 趙鵬
- 446字
- 2025-08-07 15:12:56
1.3 編譯器的不同優(yōu)化級(jí)別
常用的編譯器(如GCC、Clang以及ICX)實(shí)現(xiàn)中內(nèi)嵌了許多程序優(yōu)化手段,調(diào)用這些優(yōu)化手段的一個(gè)常用方法是利用“-O”選項(xiàng)接上不同的優(yōu)化級(jí)別來(lái)對(duì)程序進(jìn)行編譯優(yōu)化。編譯命令如下所示:

不同的優(yōu)化級(jí)別往往包含不同的優(yōu)化手段。采取的優(yōu)化選項(xiàng)級(jí)別越高,編譯器就會(huì)采取更多的優(yōu)化手段來(lái)嘗試對(duì)程序進(jìn)行優(yōu)化。這些優(yōu)化手段通常能夠較為顯著地提升程序的執(zhí)行效率,從而獲得更好的運(yùn)行性能。表1.4展示了采用ICX編譯器對(duì)代碼1.4進(jìn)行不同級(jí)別的編譯優(yōu)化后的運(yùn)行時(shí)間的結(jié)果。從結(jié)果可見(jiàn),隨著編譯優(yōu)化級(jí)別從-O0上升到-O2,程序的運(yùn)行性能也得到了顯著提升。但是,在開(kāi)啟-O3選項(xiàng)以后,程序的運(yùn)行性能相比于開(kāi)啟-O2選項(xiàng)后的性能反而有小幅度下降。常用的編譯器在開(kāi)啟-O3選項(xiàng)以后,往往會(huì)采用更為激進(jìn)的優(yōu)化手段來(lái)對(duì)程序進(jìn)行優(yōu)化。然而,采用-O3選項(xiàng)生成代碼的運(yùn)行效率不一定比采用-O2選項(xiàng)生成代碼的運(yùn)行效率高,這取決于被編譯程序本身以及編譯器的具體實(shí)現(xiàn)。接下來(lái),我們選擇性能結(jié)果最好的-O2選項(xiàng)作為后續(xù)實(shí)驗(yàn)的編譯優(yōu)化級(jí)別。
表1.4 不同編譯優(yōu)化級(jí)別對(duì)運(yùn)行時(shí)間的影響

- Bootstrap Site Blueprints Volume II
- The Supervised Learning Workshop
- Learning ROS for Robotics Programming(Second Edition)
- Docker技術(shù)入門(mén)與實(shí)戰(zhàn)(第3版)
- 技術(shù)領(lǐng)導(dǎo)力:程序員如何才能帶團(tuán)隊(duì)
- Designing Hyper-V Solutions
- Building Mapping Applications with QGIS
- C語(yǔ)言程序設(shè)計(jì)實(shí)踐教程
- Oracle 18c 必須掌握的新特性:管理與實(shí)戰(zhàn)
- Scala編程(第5版)
- Building Dynamics CRM 2015 Dashboards with Power BI
- Go語(yǔ)言從入門(mén)到精通
- Test-Driven iOS Development with Swift
- Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程
- Processing開(kāi)發(fā)實(shí)戰(zhàn)