1. 程式人生 > >GCC優化選項的各種含義以及潛藏風險

GCC優化選項的各種含義以及潛藏風險

在研究編譯驅動的makefile的時候,發現GCC的命令列裡面有一個-Os的優化選項。
    遍查GCC文件,發現了-O0, -O1, -O2, -O3,就是沒有發現-Os。
    祭出GOOGLE大法搜了一下,終於發現這篇文章說明了-Os的作用:
http://www.linuxjournal.com/article/7269

   原來-Os相當於-O2.5。是使用了所有-O2的優化選項,但又不縮減程式碼尺寸的方法。
   詳細的說明如下:
Level 2.5 (-Os)

The special optimization level (-Os or size) enables all -O2 optimizations that do not increase code size; it puts the emphasis on size over speed. This includes all second-level optimizations, except for the alignment optimizations. The alignment optimizations skip space to align functions, loops, jumps and labels to an address that is a multiple of a power of two, in an architecture-dependent manner. Skipping to these boundaries can increase performance as well as the size of the resulting code and data spaces; therefore, these particular optimizations are disabled. The size optimization level is enabled as:

gcc -Os -o test test.c

In gcc 3.2.2, reorder-blocks is enabled at -Os, but in gcc 3.3.2 reorder-blocks is disabled.

==============================
補充:在GCC的官方文件裡又發現了關於-Os的說明:
http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

相關推薦

GCC優化選項各種含義以及潛藏風險

在研究編譯驅動的makefile的時候,發現GCC的命令列裡面有一個-Os的優化選項。     遍查GCC文件,發現了-O0, -O1, -O2, -O3,就是沒有發現-Os。     祭出GOOGLE大法搜了一下,終於發現這篇文章說明了-Os的作用: http://www.linuxjournal.com

gcc優化選項解析

函數 sed forward 普通 函數參數 處理器 空間 style war 1 -fno-defer-pop 函數返回的時候,就立即將棧裏面放置的該函數的參數pop出來。這樣可以避免函數參數占用過多的棧空間。 2 -fforward-propagate ? 3 -ffp

GCC 優化選項 -O1 -O2 -O3 -OS 優先級,-FOMIT-FRAME-POINTER(O3的優化很小,只增加了幾條優化而已)

reorder you alias form when must deb off cif 四種編譯優化類型的解釋: `-O ‘ `-O1 ‘ Optimize. Optimizing compilation takes

Gcc 優化選項注意事項

Gcc -O0 不優化,-O1 -O2 -O3對程式碼進行了優化,減小目標檔案大小,減小程式碼段及棧空間的大小,同時也會帶來一些意想不到的問題,所以良好的程式設計風格和規範至關重要,避免型別直接來回轉換,進可能用小記憶體表示,而且不同平臺要求4或8位元組對齊。 如: 1、函

gcc 優化選項 -O1 -O2 -O3 -Os 優先順序,-fomit-frame-pointer .

少優化->多優化:O0 -->> O1 -->> O2 -->> O3-O0表示沒有優化,-O1為預設值,-O3優化級別最高英文解析:`-O ' `-O1 '                 Optimize.      Optimi

GCC優化選項:一般的文件裡不容易找到的-Os

在研究編譯驅動的makefile的時候,發現GCC的命令列裡面有一個-Os的優化選項。    遍查GCC文件,發現了-O0, -O1, -O2, -O3,就是沒有發現-Os。    祭出GOOGLE大法搜了一下,終於發現這篇文章說明了-Os的作用:http://www.lin

gcc 優化選項 -O1 -O2 -O3 -Os 優先順序,-fomit-frame-pointer

少優化->多優化: O0 -->> O1 -->> O2 -->> O3 -O0表示沒有優化,-O1為預設值,-O3優化級別最高 英文解析: `-O ' `-O1 '                 Optimize.      O

用 dotTrace 進行效能分析時,各種不同效能分析選項含義和用途

對 .NET 程式進行效能分析,dotTrace 能應對絕大多數的場景。在開啟一個程序進行效能分析之前,我們會看到一些效能分析選項(Profiler Options)。本文將介紹這幾個選項的含義,並用實際的例子來說明其用途。 本文內容

gcc -O0 -O1 -O2 -O3 四級優化選項及每級分別做什麼優化

今天看到了一篇文章,寫的挺好就將其轉載, Gcc 編譯優化簡介 gcc 提供了為了滿足使用者不同程度的的優化需要,提供了近百種優化選項,用來對{編譯時間,目標檔案長度,執行效率}這個三維模型進行不同的取捨和平衡。優化的方法不一而足,總體上將有以下幾類:1)精簡操作指令;

gcc -O0 -O1 -O2 -O3 四級優化選項及每級分別做什麼優化

Gcc 編譯優化簡介gcc 提供了為了滿足使用者不同程度的的優化需要,提供了近百種優化選項,用來對{編譯時間,目標檔案長度,執行效率}這個三維模型進行不同的取捨和平衡。優化的方法不一而足,總體上

gcc/g++ -O 優化選項說明

查查gcc手冊就知道了,每個編譯選項都控制著不同的優化選項 下面從網路上copy過來的,真要用到這些還是推薦查閱手冊 -O設定一共有五種:-O0、-O1、-O2、-O3和-Os。 除了-O0以外,每一個-O設定都會多啟用幾個選項,請查閱gcc手冊的優化選項章節,以便了解每個

gcc- -O 優化選項

查查gcc手冊就知道了,每個編譯選項都控制著不同的優化選項 下面從網路上copy過來的,真要用到這些還是推薦查閱手冊 -O設定一共有五種:-O0、-O1、-O2、-O3和-Os。 除了-O0以外,每一個-O設定都會多啟用幾個選項,請查閱gcc手冊的優化選項章節,以便了解

關於<meta>的各種用處以及移動端的常見問題

字母自動大寫 mpat 自動 col code log spa capi flex 1.優先使用最新版本的IE和Chrome <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 2

JavaScript—— scroolleft----offsetleft 系列的含義以及瀏覽器兼容問題

class image ner 示例 setw yellow asc element nth clientWidth:獲取對象的內容可視區域的寬度,即clientWidth=width+padding,不包括滾動條。 clientHeight:獲取對象的內容可視區域的高度,

各種height 以及判斷滾動條是否已拉到頁面最底部

scroll box nbsp .html bject ive archive 判斷 pre DTD已聲明 IEdocument.documentElement.scrollHeight 瀏覽器所有內容高度 ,document.body.scrollHeight 瀏覽器

軟件測試的含義以及測試的對象

軟件測試 測試 軟件測試的含義:早期而言,在1973年Bill Hetzel提出,軟件測試是對程序能夠按預期運行建立起的一種信心。 經典定義是1979年Myers提出,測試是為發現錯誤而執行程序的過程。 軟件測試(Software Testing)是軟件生存期的一個重要的階段,是軟件質量保證的一個關鍵

理解閉包的含義以及他的使用

var urn 執行 標識 nbsp 函數 返回 con 訪問 1、什麽是閉包,  閉包就是能夠讀取其它函數內部的變量。首先我們來看一段代碼:function a(){ var n = 0; function inc() { n++;

js this的含義以及講解

var 理解 function clas blog spa 了解 urn 屬性 this關鍵字是一個非常重要的語法點。毫不誇張地說,不理解它的含義,大部分開發任務都無法完成。 首先,this總是返回一個對象,簡單說,就是返回屬性或方法“當前”所在的對象。 下面來兩個例子來讓

Ajax參數的含義以及用法

sync 執行 時間 根據 p s process 角度 進一步 是否 以jquery.js為例講述ajax對應的參數以及用法 1.url: (發送請求的地址)(String)(默認為當前頁地址)。 2.type: (發送請求的方式,http請求方式)(String)(默認

連線Mysql提示Can’t connect to local MySQL server through socket各種情況以及解決辦法(轉載)

轉自:http://www.aiezu.com/db/mysql_cant_connect_through_socket.html 產生此問題的原因一般有兩個: 1、mysql服務未正常執行: 由於mysql的socket檔案是由mysqld服務啟動時建立的,如果mysqld服務未正常啟動,soc