檢視來源
出自wiki.gentoo.tw
Desktop cflags
的原始碼
跳轉到:
導航
,
搜尋
根據以下的原因,您並無權限去做編輯頁面:
您剛才的請求只有
用戶
使用者組的使用者才能使用。
你可以檢視並複製本頁面的原始碼。
=== 比較安全的選項 === 首先是安全的選項: * 指令 ** 參數與用法 [註二] ** 說明 ** 建議 * -O ** -O (-O1), -O0, -O2, -O3, -Os ** 依照後面數字的大小,針對效能最佳化的程度也不同 (穩定度也可能遞減)。其中 -Os 是個比較特殊的等級,針對原始碼大小最佳化。 ** 一般不建議使用 -Os, 因為 Os 會打破程式碼的 align, 為了處理未對齊的程式碼可能會需要更多的 cpu 運算 * -fforce-mem<br />-fforce-addr ** -fforce-mem, -fno-force-mem<br />-fforce-addr, -fno-force-addr ** 強制在運算前將記憶體中的數值 (mem) 或記憶體位置 (addr) 複製到暫存器中。啟動這兩個選項可以做出較好的程式碼。 ** 這兩個是好東西,啟動它們!其中 -fforce-mem 已在 -O2, -O3, -Os 中啟動,所以若您有用這三個選項的其中一個,只要 -fforce-addr 就夠了。 * -fomit-frame-pointer ** -fomit-frame-pointer, -fno-omit-frame-pointer ** 若非必要,不將函式的 frame pointer 放進暫存器中。這將避免您的程式儲存、設定、以及還原 frame pointer;也在許多函式中省下一個暫存器。'''在某些平台上,開啟這個選項將無法進行除錯!'''若平台支援不使用 frame pointer 除錯,這個選項將在 -O, -O2, -O3, -Os 中啟動。 ** 很抱歉, x86 剛好是需要 frame pointer 才能進行除錯的平台之一。但是... 您想對您的桌面進行除錯嗎?若答案為非,您可以放心啟動這個選項。 ** 註:gcc 4.0 使用了另一種除錯技術,可以安全使用(需要 gdb 6.1 ) * -finline-functions ** -finline-functions, -fno-inline-functions ** 將所有簡單的函式整合進呼叫他們的函式中。編譯器會自動試探並決定那些函式值得被整合。於 -O3 時啟動。 ** 雖然這個選項會增加程式大小,但是他卻是個增進效能的好東西。我建議您在這裡啟動它,然後使用下面一個指令指定 inline 條件。 * -finline-limit ** -finline-limit=n ** n 為決定函式是否能被 inline 的虛擬指令長度。預設的值為 600。 ** 這個數值越小,程式啟動的速度越快,但是運算的速度越慢。作為桌面使用,我建議 -finline-limit=400。 * -fmove-all-movables<br />-freduce-all-givs ** -fmove-all-movables, -fno-move-all-moveables<br />-freduce-all-givs, -fno-redduse-all-givs ** 這兩個是迴圈最佳化技術,將無關迴圈內容的運算改在迴圈外執行。編譯出的執行檔可能更快也可能更慢,結果跟程式的寫法有很大的關係。 ** 雖然說效能跟程式寫法有關,但是大部份的狀況下這兩個選項會做出比較小與比較快的程式碼,所以我建議您啟動他們! **註:gcc 4.0 的最佳化系統已變更,不需要 -fmove-all-movables, -freduce-all-givs * -freorder-blocks<br />-freorder-functions ** -freorder-blocks, -fno-reorder-blocks<br />-freorder-functions, -fno-reorder-functions ** 藉由重新編排程式區塊來增進效能以及減少執行檔大小。 ** 這兩個也是好東西,所以我建議您啟動它們。缺點是會讓編譯時間變長。 ** -freorder-blocks 於 -O2, -O3 時啟動,於 -Os 中關閉。-freorder-functions 於 -O2, -O3, -Os 時啟動。 * -fexpensive-optimizations ** -fexpensive-optimizations, -fno-expensive-optimizations ** 執行幾個會加長編譯時間的非主要最佳化程序。於 -O2, -O3, -Os 中預設開啟。 ** 雖然會增加編譯時間,但是能增加效能也能減少執行檔大小,所以建議啟用。 * -falign-functions<br />-falign-labels<br />-falign-loops<br />-falign-jumps ** -falign-functions, -falign-functions=n<br />-falign-labels, -falign-labels=n<br />-falign-loops, -falign-loops=n<br />-falign-jumps, -falign-jumps=n ** 依照大於 n 的最小 2 的次方位元組對齊函式 (functions)、標籤 (labels)、迴圈 (loops)、跳躍 (jumps) 的起頭,跳過至多 n 位元組。 ** 我知道這很抽象,解釋起來要花很多篇幅,所以請各位使用預設值,亦即指定 -falign-functions, -falign-labels, -falign-loops, -falign-jumps,但是不指定 =n。於 -O2, -O3 時啟動。於 -Os 中關閉。 * -frename-registers ** -frename-registers, -fno-rename-registers ** 在作過暫存器定位之後,使用剩下來的暫存器。這個最佳化在有很多暫存器的 CPU 上最明顯 (如 ARM、PowerPC... 等。x86 不屬於他們的一份子)。會增加除錯的困難度。 ** 雖然在 x86 上不明顯,但是還是有用。而且 x86-64 提供更多的暫存器,所以建議您還是應該打開它。於 -O3 時啟動。 * -fweb ** -fweb, -fno-web ** 建立經常使用的暫存器網路。提供更佳的暫存器使用率。不過也會增加除錯的困難度。 ** 這個選項在 x86-64 平台上作 32-bit 編譯時很有效。 ** 這個是安全選項中比較偏向實驗性質的選項,雖然建議您啟動,但是若啟動之後程式不穩,請將它關閉。於 -O3 時啟動。
返回到
Desktop cflags
.
檢視
頁面
討論
檢視來源
歷史
個人工具
登入/建立新帳號
導航
首頁
社群入口
最近活動
近期變動
隨機頁面
幫助
搜索
工具箱
哪些網頁連結到此
相關變更
特殊頁面