ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
                                    gcc優(yōu)化標(biāo)志
          選項                  作用
          -ffloat-store         禁止在CPU的寄存器中保存浮點變量的值.這能把CPU寄存器節(jié)省下來留作它用,而且可以防止產(chǎn)生過分精確但不必要的浮點數(shù).
          -ffast-math           產(chǎn)生浮點數(shù)學(xué)優(yōu)化,這能提高速度但違反了IEEE或ANSI/ISO標(biāo)準(zhǔn).如果程序不需要嚴(yán)格遵守IEEE規(guī)范,可在編譯浮點密集型的程序時考慮采用這一標(biāo)志
          -finline-functions    把所有的"簡單"函數(shù)在調(diào)用它們的函數(shù)中就地展開.編譯器決定了什么是"簡單"函數(shù).減少處理器與函數(shù)相關(guān)的開銷是一種基本的優(yōu)化技術(shù)
          -funroll-loops        展開所有能在編譯時確定重復(fù)次數(shù)的循環(huán)體.展開循環(huán)體后每步循環(huán)都能省出幾條CPU指令,這樣大大減少了執(zhí)行時間
          -fomit-frame-pointer  如果函數(shù)不需要則丟掉指針,該指針保存在CPU的一個寄存器中.因為去掉了設(shè)置,保存和恢復(fù)幀指針?biāo)匦璧闹噶?所以加快了處理速度.
          -fschedule-insns      記錄可能暫停的指令,因為它們正在等候的數(shù)據(jù)不在CPU中
          -fschedule-insns2     執(zhí)行第二次指令重排序(類似于-fschedule-insns)
          -fmove-all-movables   把所有出現(xiàn)在循環(huán)體內(nèi)部但穩(wěn)定不變的計算移出循環(huán)體.這從循環(huán)體中去除了不必要的操作,加快了循環(huán)的整體運(yùn)算速度.

          內(nèi)聯(lián)和循環(huán)展開技術(shù)都能夠大大提高程序的執(zhí)行速度,因為它們都避免了函數(shù)調(diào)用和變量查找的開銷,但付出的代價往往是大大增加了目標(biāo)或二進(jìn)制代碼的大小.

          一般而言,Linux程序員似乎愛用優(yōu)化選項-O2.
          posted on 2005-08-04 21:57 ivaneeo 閱讀(1728) 評論(0)  編輯  收藏 所屬分類: gcc小試牛力
          主站蜘蛛池模板: 珲春市| 五指山市| 汉中市| 温宿县| 芷江| 江城| 宜城市| 乌苏市| 漳平市| 古浪县| 壶关县| 且末县| 上虞市| 兰考县| 蓬溪县| 绵阳市| 林芝县| 大竹县| 偃师市| 盘锦市| 耒阳市| 安义县| 鲜城| 江城| 乐安县| 朔州市| 常德市| 祁门县| 元阳县| 广东省| 怀安县| 前郭尔| 辰溪县| 盐城市| 广安市| 绵竹市| 黔西县| 西城区| 安达市| 珠海市| 增城市|