⑴ 一個C++工程中,許多個文件都include某一個類,當該類更新時,編譯速度太慢,怎麼辦
這是個好問題,雖然老生常談,但真正知道解決方案的人很少。《EffectiveC++》有介紹,同時推薦這本書給所有C++er。
一個組織有問題的大型項目中,影響編譯速度的最大問題就是頭文件形成龐大的依賴網路,其中一個頭文件修改就導致一大堆間接依賴的源代碼文件需要重新編譯。a.h包含b.h,b.h包含c.h,c.h又包含d.h,即使a.h和d.h似乎沒什麼關系,修改d.h的時候還是無可避免a.cc被重新編譯。
首先得知道C++一個特性,函數分為聲明和實現兩部分是人所皆知,但類也可以分為前置聲明和定義可能知道的人就比較少了,知道能怎麼用就更少了,其實就是可以用來解決編譯速度問題的。
⑵ 如何加快C++代碼的編譯速度
最重要的一個原因應該是C++基本的"頭文件-源文件"的編譯模型:
每個源文件作為一個編譯單元,可能會包含上百甚至上千個頭文件,而在每一個編譯單元,這些頭文件都會被從硬碟讀進來一遍,然後被解析一遍。
每個編譯單元都會產生一個obj文件,然後所以這些obj文件會被link到一起,並且這個過程很難並行。
這里,問題在於無數頭文件的重復load與解析,以及密集的磁碟操作。
⑶ Xcode編譯慢打包慢解決方法
1. 提高 XCode 編譯時使用的線程數
defaults write com.apple.Xcode 48 cpu 佔用會特別高 達到150%的樣子,15寸 設置48比較好,否則操作其他因員工可能會卡
XCode 默認使用與 CPU 核數相同的線程來進行編譯,但由於編譯過程中的 IO 操作往往比 CPU 運算要多,因此適當的提升線程數可以在一定程度上加快編譯速度。本人採用的是 4 核的 CPU ,將線程數改為 8 後編譯速度略有提升。
2. 將 Debug Information Format 改為 DWARF
在工程對應Target的Build Settings中,找到Debug Information Format這一項,將Debug時的DWARF with dSYM file改為DWARF。
這一項設置的是是否將調試信息加入到可執行文件中,改為DWARF後,如果程序崩潰,將無法輸出崩潰位置對應的函數堆棧,但由於Debug模式下可以在XCode中查看調試信息,所以改為DWARF影響並不大。這一項更改完之後,可以大幅提升編譯速度。
// 這一條暫時不用管,默認配置
3. 將 Build Active Architecture Only 改為 Yes
在工程對應Target的Build Settings中,找到Build Active Architecture Only這一項,將Debug時的No改為Yes。
這一項設置的是是否僅編譯當前架構的版本,如果為No,會編譯所有架構的版本。需要注意的是,此選項在Release模式下必須為Yes,否則發布的ipa在部分設備上將不能運行。這一項更改完之後,可以顯著提高編譯速度。
在設置完以上三個項之後,相信編譯時間會縮短很多。
4. 如何關掉 CCache 提高編譯打包速度呢編寫腳本,文件名稱ccache
放到Xcode項目根目錄,然後
詳情見這篇帖子
https://www.jianshu.com/p/c9e3fb3dfa53
5. 去掉打包緩存
~/Library/Developer/Xcode/Procts
⑷ 如何提高Delphi7的編譯速度
提高 delphi 的編譯速度,最有效的方法是提高計算機的性能(更高的CPU運行速度、使用固態硬碟等)。
從軟體優化的角度來說,有以下做法:
1、減少程序中第三方控制項的引用,尤其是一些冗餘的三方控制項引用要清理掉。
2、優化下操作系統、即時殺毒監控程序等。
3、在編寫代碼時,將 Project->Options->Packages->Build with runtime packages 選項鉤上,生成 exe 最終時再關閉。(詳見網文《delphi的編譯速度提高》)
⑸ 如何提高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