【方輝專欄】ARM嵌入式編譯器(八) 優(yōu)化代碼大小或性能的編譯器選項介紹
2022-08-24
摘要: 本文主要對Arm Compiler 6編譯器的優(yōu)化選項進行介紹。關(guān)鍵字:Arm Compiler 6、編譯器、優(yōu)化等級、鏈接時優(yōu)化。1. 代碼優(yōu)化編譯器在優(yōu)化時有些可以提高代碼性能,而有些可以減少代碼大小。不同的優(yōu)化通常相互會有影響。通常情況下,提高代碼性能的方法會增加代碼大小,而減少代碼大小的方法會降低性能。例如,編譯器在展開小循環(huán)時會獲得更高的性能,但會增加代碼大小。下面具體介紹一下armclang的優(yōu)化參數(shù)選項。armclang默認(rèn)優(yōu)化級別是-O0,不執(zhí)行優(yōu)化。優(yōu)化代碼執(zhí)行性能的參數(shù)選項:-O1|-O2|-O3 :數(shù)字越大代表優(yōu)化等級越高。-Ofast:在-O3基礎(chǔ)上進行提高性能的所有優(yōu)化,有可能會違反一些語言標(biāo)準(zhǔn)。-Omax:在-Ofast基礎(chǔ)上增加鏈接時優(yōu)化。優(yōu)化代碼大小的參數(shù)選項:-Os:執(zhí)行代碼優(yōu)化減小代碼大小,同時一定程度上兼顧代碼執(zhí)行性能。-Oz:執(zhí)行代碼優(yōu)化減小代碼大小。-Omin:在-Oz基礎(chǔ)上,利用鏈接時優(yōu)化刪除未使用的代碼,同時嘗試優(yōu)化全局內(nèi)存訪問。在編譯C++代碼時會刪除虛函數(shù)。2. 鏈接時優(yōu)化armlink的優(yōu)化級別與armclang的優(yōu)化級別相同。單獨在armlink時使用鏈接時優(yōu)化,可以使用與armlink --lto_level來選擇相應(yīng)的連接時優(yōu)化級別。當(dāng)然在編寫代碼時,也可以減少代碼大小,提高執(zhí)行效率。例如前面文章提到的,優(yōu)化循環(huán)終止條件,展開循環(huán),減少對象和庫的調(diào)試信息,使用內(nèi)聯(lián)函數(shù)等等。來源:《Arm? Compiler for Embedded User Guide Version 6.18》+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++關(guān)于億道電子億道電子技術(shù)有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內(nèi)資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業(yè)客戶提供研發(fā)、設(shè)計、管理過程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產(chǎn)品設(shè)計周期,提升產(chǎn)品可靠性。20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并作為他們在中國區(qū)的主要分銷合作伙伴服務(wù)了數(shù)千家中國本土客戶,為客戶提供從芯片級開發(fā)工具、EDA 設(shè)計工具、軟件編譯以及測試工具、結(jié)構(gòu)設(shè)計工具、仿真工具、電氣設(shè)計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經(jīng)驗積累,真正的幫助客戶實現(xiàn)了讓研發(fā)更簡單、更可靠、更高效的目標(biāo)。歡迎關(guān)注“億道電子”公眾號了解更多研發(fā)工具軟件知識
查看更多→