vs的編譯器優化
㈠ 影響vs編譯速度的因素有哪些
影響因素比較多:
1 文件的大小,文件大小指的是全部include展開後的大小。
2 文件數量,編譯是一個一個文件進行的,所以你的工程的文件數量也有關系。
3 還有聲明的復雜程度,復雜聲明需要額外地計算。
4 最影響編譯速度的估計是C++的模板,模板在編譯的時候要進行推導,得到相應的結果,這個非常費時間。如果你是模板里還套了模板,那就比較慢了。
5 鏈接庫的數量,鏈接很多庫也會使得編譯速度變慢。
6 inline函數展開,會使得代碼膨脹,也會影響編譯速度
7 debug模式編譯要留符號表做調試,也會影響速度
8 release模式如果開了優化,編譯優化會改變代碼的某些結構,這也是拖慢編譯器的一個重要因素。
㈡ VS 2010 C++編譯器/鏈接器中新的基於配置的優化選項有哪些
PogoSafeMode關鍵字是一個新的基於配置的優化選項。可以使用PogoSafeMode關鍵字來指定開發者想使用安全模式還是快速模式來優化的應用程序。
㈢ 如何提高vs2010編譯速度
如果你的cpu夠強你應該學會如何利用好它來加速你的代碼編譯速度,那麼你怎麼才能夠最大限度讓你的cpu發燒呢?
下面是一個對比:
比如我的cpu是i7 3770k,
編譯cocos2d-x的libcocos2d工程:
不優化:
1>Time Elapsed 00:01:35.25
優化後:
1>Time Elapsed 00:00:21.66
效果顯著!!!
參考網頁:
Visual Studio 2010中C++並行構建調優(1)
http://developer.51cto.com/art/201003/189235.htm
1>cl : Command line warning D9030: '/Gm' is incompatible with multiprocessing; ignoring /MP switch
解決辦法是:
Properties -> Configuration Properties -> C/C++ -> Code Generation -> Enable Minimal Rebuild -> No(/Gm-)
Properties -> Configuration Properties -> C/C++ -> Geneal -> Multi-processor Compilation -> Yes(/MP)
一些含義和拓展資料:
Enable minimal rebuild
通過保存關聯信息到.IDB文件,使編譯器只對最新類定義改動過的源文件進行重編譯,提高編譯速度
Enable Incremental Compilation
同樣通過.IDB文件保存的信息,只重編譯最新改動過的函數
/MP (Build with Multiple Processes)
http://msdn.microsoft.com/en-us/library/bb385193.aspx
/Gm (Enable Minimal Rebuild)
http://msdn.microsoft.com/en-us/library/kfz8ad09.aspx
㈣ vs2010 編譯程序時間超長
vs2010是慢了些,我win7下最開始裝的VS2010,編譯時有點慢,但沒有像你說的30分鍾這么久,是不是你電腦也卡啊?vs2010編譯慢是因為多了一些庫。還有就是第一次編譯時有點慢,應該是載入一些東西。
㈤ VS2013自帶的編譯器貌似優化了很多!是不是這樣
編譯時間長了,不是因為優化的更「多」更好了,而是編程軟體大了,需要處理的事情多了。
當然,相對老版本來說,2013的編譯確實有所優化,同樣代碼的exe,以同樣參數編譯,會小一些。當然。。。。這不是慢的原因和理由
㈥ 高手們來看看VS2010 中編譯器設置都是什麼意思(其實VS2008也差不多吧),誰能詳細的給說一下,萬分感謝了
這是C/C++編譯優化設置部分
第一行,啟用的優化等級,這里優化被禁止了
第二行,內聯函數,表示是否展開,還是以函數形式存在
第三行,是否啟用內部函數
使用內部函數的代碼比較快,因為它們沒有函數調用的系統開銷。但由於創建了附
加代碼,代碼尺寸可能比較大。
第四行,優化方式,速度優先還是代碼尺寸優先;通常會選擇速度優先,現在尺寸已不是問題
第五行,是否禁止在調用堆上創建框架指針,以加快函數調用;堆內存分配演算法需要時間
第六行,是否啟用纖程安全的線程本地存儲優化
第七行,是否啟用全局鏈接時代碼優化;指的是生成具體指令過程推遲到鏈接的時候,這樣有
助於具體的一些優化,比如,函數內部變數,有些可以是寄存器變數,沒必要再
棧里分配,寄存器訪問比內存訪問快很多,這些都依賴於函數的調用拓撲等關系。
㈦ 這是VS2010編譯器優化嗎怎麼改
這個問題比較深, 所以只有哥來回答你了。
你說的問題在VS2008上也是相同的表現,這個是因為微軟的庫實現不是直接實現在你call的generate_n這個函數上的,而是有好幾重轉調,所以造成你即使對第一重調用的 模板函數用 引用去實例化,由於後面轉調的函數都是使用值去實例化的,所以實際你得到的運行效果還是值語義的。
比如你call 函數 func1<A&>(), 但是由於func1<A&>() 調用了func2<A>(), 又繼續調用了func3<A>(), 最後func3里操作的其實是一個值拷貝,所以影響不到外面的引用的對象。
哥去 微軟報了個bug,裡面寫得比較細,你可以仔細看,http://connect.microsoft.com/VisualStudio/feedback/details/676282/vs-2010-sp1-doesnt-conform-to-the-c-standard-library-a-tutorial-and-reference
㈧ VS 系列的編譯器編譯速度 慢死了,怎麼加快編譯速度啊,真他媽垃圾啊,無法忍受了啊。不是我的配置差
編譯速度慢?貌似沒遇到過,要麼你說的是運行速度?
㈨ 如何改變VS2010的編譯器
改不了
不支持自己配置
如果你想使用其它編譯器
那就只能把VS做編輯,不要用它編譯 調試 運行
用你其它的編譯器 去編譯 運行。
㈩ visual C++ 的優化選項分別都是什麼意思
Od:編譯器不做優化,通常debug的使用這個編譯選項
O1:代碼最小,使用這個選項編譯出來的二進制文件是最小的,但是可能會犧牲一些執行效率
O2:編譯出來的代碼執行速度最快,但是大小會比O1大(release默認)
Ox:對程序進行最大優化,可能會犧牲一些兼容性問題等,對執行速度和二進制文件大小都盡可能優化