C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)
-
O1優(yōu)化會消耗少多的編譯時間,它主要對代碼的分支,常量以及表達(dá)式等進(jìn)行優(yōu)化。?
O2會嘗試更多的寄存器級的優(yōu)化以及指令級的優(yōu)化,它會在編譯期間占用更多的內(nèi)存和編譯時間。?
O3在O2的基礎(chǔ)上進(jìn)行更多的優(yōu)化,例如使用偽寄存器網(wǎng)絡(luò),普通函數(shù)的內(nèi)聯(lián),以及針對循環(huán)的更多優(yōu)化。?
Os主要是對代碼大小的優(yōu)化,我們基本不用做更多的關(guān)心。?通常各種優(yōu)化都會打亂程序的結(jié)構(gòu),讓調(diào)試工作變得無從著手。并且會打亂執(zhí)行順序,依賴內(nèi)存操作順序的程序需要做相關(guān)處理才能確保程序的正確性。??
-
-O0: 不做任何優(yōu)化,這是默認(rèn)的編譯選項。
-
-O和-O1: 對程序做部分編譯優(yōu)化,對于大函數(shù),優(yōu)化編譯占用稍微多的時間和相當(dāng)大的內(nèi)存。使用本項優(yōu)化,編譯器會嘗試減小生成代碼的尺寸,以及縮短執(zhí)行時間,但并不執(zhí)行需要占用大量編譯時間的優(yōu)化。 打開的優(yōu)化選項:
-
O2優(yōu)化能使程序的編譯效率大大提升。
-
從而減少程序的運(yùn)行時間,達(dá)到優(yōu)化的效果。
-
C++程序中的O2開關(guān)如下所示:
- 同理O1、O3優(yōu)化只需修改括號中的數(shù)即可。
- 只需將這句話放到程序的開頭即可打開O2優(yōu)化開關(guān)。
?
開啟O3優(yōu)化:
#pragma GCC optimize(3,"Ofast","inline")?
總結(jié)
以上是生活随笔為你收集整理的C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: *【CodeForces - 1047A
- 下一篇: C++中两个常用的控制语句格式的函数(w