導航:首頁 > 源碼編譯 > cpu和編譯速度

cpu和編譯速度

發布時間:2022-04-27 18:49:44

Ⅰ 腳本編譯速度和CPU有關嗎

有關的。CPU越強大,編譯越快咯,軟體的編譯也是這樣,做大工程的點完編譯就可以泡杯咖啡慢慢喝了

Ⅱ 如何加快linux android 的編譯速度

項目越來越大,每次需要重新編譯整個項目都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的緩存文件設置在tmpfs上,但是這樣的話,每次開機後,ccache的緩存文件會丟失
3.distcc,多機器編譯
4.將屏幕輸出列印到內存文件或者/dev/null中,避免終端設備(慢速設備)拖慢速度。

tmpfs
有人說在Windows下用了RAMDisk把一個項目編譯時間從4.5小時減少到了5分鍾,也許這個數字是有點誇張了,不過粗想想,把文件放到內存上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時文件的話。
這個做法的實現成本最低,在Linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel來測試一下編譯速度:
用物理磁碟:40分16秒
用tmpfs:39分56秒
呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際項目來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無害的。當然對於大項目來說,你需要有足夠的內存才能負擔得起這個tmpfs的開銷。
make -j
既然IO不是瓶頸,那CPU就應該是一個影響編譯速度的重要因素了。
用make -j帶一個參數,可以把項目在進行並行編譯,比如在一台雙核的機器上,完全可以用make -j4,讓make最多允許4個編譯命令同時執行,這樣可以更有效的利用CPU資源。
還是用Kernel來測試:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看來,在多核CPU上,適當的進行並行編譯還是可以明顯提高編譯速度的。但並行的任務不宜太多,一般是以CPU的核心數目的兩倍為宜。
不過這個方案不是完全沒有cost的,如果項目的Makefile不規范,沒有正確的設置好依賴關系,並行編譯的結果就是編譯不能正常進行。如果依賴關系設置過於保守,則可能本身編譯的可並行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一個編譯器驅動器。第一趟編譯時ccache緩存了GCC的「-E」輸出、編譯選項以及.o文件到$HOME/.ccache。第二次編譯時盡量利用緩存,必要時更新緩存。所以即使"make clean; make"也能從中獲得好處。ccache是經過仔細編寫的,確保了與直接使用GCC獲得完全相同的輸出。

ccache用於把編譯的中間結果進行緩存,以便在再次編譯的時候可以節省時間。這對於玩Kernel來說實在是再好不過了,因為經常需要修改一些Kernel的代碼,然後再重新編譯,而這兩次編譯大部分東西可能都沒有發生變化。對於平時開發項目來說,也是一樣。為什麼不是直接用make所支持的增量編譯呢?還是因為現實中,因為Makefile的不規范,很可能這種「聰明」的方案根本不能正常工作,只有每次make clean再make才行。
安裝完ccache後,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,鏈到/usr/bin/ccache上。總之確認系統在調用gcc等命令時會調用到ccache就可以了(通常情況下/usr/local /bin會在PATH中排在/usr/bin前面)。
安裝的另外一種方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路徑加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
這樣每次啟動g++的時候都會啟動/usr/lib/ccache/bin/g++,而不會啟動/usr/bin/g++
效果跟使用命令行ccache g++效果一樣
這樣每次用戶登錄時,使用g++編譯器時會自動啟動ccache
繼續測試:
用ccache的第一次編譯(make -j4):23分38秒
用ccache的第二次編譯(make -j4):8分48秒
用ccache的第三次編譯(修改若干配置,make -j4):23分48秒

看來修改配置(我改了CPU類型...)對ccache的影響是很大的,因為基本頭文件發生變化後,就導致所有緩存數據都無效了,必須重頭來做。但如果只是修改一些.c文件的代碼,ccache的效果還是相當明顯的。而且使用ccache對項目沒有特別的依賴,布署成本很低,這在日常工作中很實用。
可以用ccache -s來查看cache的使用和命中情況:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,顯然只有第二編次譯時cache命中了,cache miss是第一次和第三次編譯帶來的。兩次cache佔用了81.7M的磁碟,還是完全可以接受的。
distcc
一台機器的能力有限,可以聯合多台電腦一起來編譯。這在公司的日常開發中也是可行的,因為可能每個開發人員都有自己的開發編譯環境,它們的編譯器版本一般是一致的,公司的網路也通常具有較好的性能。這時就是distcc大顯身手的時候了。
使用distcc,並不像想像中那樣要求每台電腦都具有完全一致的環境,它只要求源代碼可以用make -j並行編譯,並且參與分布式編譯的電腦系統中具有相同的編譯器。因為它的原理只是把預處理好的源文件分發到多台計算機上,預處理、編譯後的目標文件的鏈接和其它除編譯以外的工作仍然是在發起編譯的主控電腦上完成,所以只要求發起編譯的那台機器具備一套完整的編譯環境就可以了。
distcc安裝後,可以啟動一下它的服務:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默認的3632埠允許來自同一個網路的distcc連接。
然後設置一下DISTCC_HOSTS環境變數,設置可以參與編譯的機器列表。通常localhost也參與編譯,但如果可以參與編譯的機器很多,則可以把localhost從這個列表中去掉,這樣本機就完全只是進行預處理、分發和鏈接了,編譯都在別的機器上完成。因為機器很多時,localhost的處理負擔很重,所以它就不再「兼職」編譯了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然後與ccache類似把g++,gcc等常用的命令鏈接到/usr/bin/distcc上就可以了。
在make的時候,也必須用-j參數,一般是參數可以用所有參用編譯的計算機CPU內核總數的兩倍做為並行的任務數。
同樣測試一下:
一台雙核計算機,make -j4:23分16秒
兩台雙核計算機,make -j4:16分40秒
兩台雙核計算機,make -j8:15分49秒
跟最開始用一台雙核時的23分鍾相比,還是快了不少的。如果有更多的計算機加入,也可以得到更好的效果。
在編譯過程中可以用distccmon-text來查看編譯任務的分配情況。distcc也可以與ccache同時使用,通過設置一個環境變數就可以做到,非常方便。
總結一下:
tmpfs: 解決IO瓶頸,充分利用本機內存資源
make -j: 充分利用本機計算資源
distcc: 利用多台計算機資源
ccache: 減少重復編譯相同代碼的時間
這些工具的好處都在於布署的成本相對較低,綜合利用這些工具,就可以輕輕鬆鬆的節省相當可觀的時間。上面介紹的都是這些工具最基本的用法,更多的用法可以參考它們各自的man page。
5.還有提速方法是把屏幕輸出重定向到內存文件或/dev/null,因對終端設備(慢速設備)的阻塞寫操作也會拖慢速度。推薦內存文件,這樣發生錯誤時,能夠查看。

Ⅲ 同一程序前後兩次運行時,cpu佔用率相差很大

你好 你可以先嘗試從其他機器運行編譯程序 保證正確的 gcc 編譯器安裝配置 沒有設置的錯誤 正確保存你的程序路徑 如果還是同樣問題 一般軟體版本不正確 或者有bug判斷軟體自身問題 可嘗試更改版本
如果其他機器沒有出現這種情況 一般硬體在硬體方面可能主機bios不穩定 或主板南北橋故障 主板不穩定因素多 如果你運行其他大中型程序沒有出現這種問題 比如 cad,proe,ps等軟體能正常重復操作 這樣硬體問題也可排除
在系統問題上 一般有系統文件丟失 機器存在病毒 都會造成應用程序運行不正常
整體上 找另一台機器 保證正確安裝 並在軟體設置上正確操作 如果不存在這樣的問題 重裝自用機器系統 排除系統問題 若重做系統問題依舊 硬體有問題
在其他機器問題依舊 那有軟體自身或操作不正確

Ⅳ 如何提高ISE的編譯速度

如果你的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

Ⅳ 四核的CPU比雙核的CPU編譯速度是不是快

不一定。
看具體型號具體性能。
CPU不是核心多就性能高。

Ⅵ 程序的編譯速度與程序的執行速度

執行與編譯。。也有掛鉤!。。執行、編譯速度又跟硬體有關!用 WEB來說 第一次編譯比較慢!後面這次訪問就快多了!這跟緩存有關。。還有就是代碼的問題。。 多次的循環判斷也會造成系統執行變慢!。。在提升速度方面 主要就是倆種方法 1.完善的代碼 2.提高硬體了!可能我說的比較片面!別的兄弟可以繼續補充!

Ⅶ 編譯一段代碼的速度和CPU的線程核心和代碼的速度有關嗎如果編譯一個QQ大小的代碼需要多長時間啊

1cpu的速度跟核心數量有關嗎?是否數量越多就越快呢?只有在同一家族的CPU中進行比較,核心數量、主頻與CPU的運行速度才有正比關系,還有影響的因素是2、3級緩存的大小。核心版本和工藝的升級也有影響。一般在同一家族的CPU中,核心越多、主頻越高、緩存越多、版本越新的CPU越快。比如AMDAthlonIIX2250肯定要比AMDAthlonIIX2240要快,但是不是也一定強於主頻、緩存、核心數都與X2240差不多的IntelPentiumE6300呢?那就不能武斷的說了。需要用各種測試軟體去驗證。2同核心數目,同主頻,同二級緩存哪個快?主板配cpu是看針腳和前端匯流排,和cpu的二級緩存無關,865的主板如果是478介面的,那就支持P42.8E和P43.2C,何況主板和cpu前端匯流排都是800mhz,完美支持兩個比當然是P43.2C好了,雖然P42.8e是1024的二級緩存,但核心是Prescott內核,和A的核心一樣,發熱量大,功耗高,而C的核心是NORTHWOOD核心,比Prescott好

Ⅷ 學C++電腦的CPU需不需要很好

現在cpu性能是過剩的,主流cpu足夠使用。

現在主要制約編譯速度的是內存以及硬碟速度,建議配置大內存以及ssd(機械硬碟編譯速度與ssd相差一倍,主要是讀取與寫入編譯產生的中間文件消耗時間)
因為可能需要多開vc工程與調試程序,所以大內存保證了不會報內存不足的錯誤(深受其害,之前用6G內存經常報內存不足,後來換了16G才愉快玩耍)

Ⅸ CPU速度快慢主要看哪些

主頻=外頻*倍頻
超頻常常是說超
外頻
頻率是直接影響CPU與內存直接數據交換速度,
決定數據流動快慢
緩存是處理數據時暫時用的存儲空間,
一般的緩存的速度會比內存快幾倍
緩存越大意味著可以更少的和內存進行數據交換,
可以大大提高性能,
同一顆cpu超頻的話,超外頻比超倍頻更能提升系統性能。
具體資料如下
CPU的外頻
通常為系統匯流排的工作頻率(系統時鍾頻率),CPU與周邊設備傳輸數據的頻率,具體是指CPU到晶元組之間的匯流排速度。外頻是CPU與主板之間同步運行的速度,而且目前的絕大部分電腦系統中外頻,也是內存與主板之間的同步運行的速度,在這種方式下,可以理解為CPU的外頻直接與內存相連通,實現兩者間的同步運行狀態。
在486之前,CPU的主頻還處於一個較低的階段,CPU的主頻一般都等於外頻。而在486出現以後,由於CPU工作頻率不斷提高,而PC機的一些其他設備(如插卡、硬碟等)卻受到工藝的限制,不能承受更高的頻率,因此限制了CPU頻率的進一步提高。因此出現了倍頻技術,該技術能夠使CPU內部工作頻率變為外部頻率的倍數,從而通過提升倍頻而達到提升主頻的目的。倍頻技術就是使外部設備可以工作在一個較低外頻上,而CPU主頻是外頻的倍數。
在Pentium時代,CPU的外頻一般是60/66MHz,從Pentium

350開始,CPU外頻提高到100MHz,目前CPU外頻已經達到了200MHz。由於正常情況下CPU匯流排頻率和內存匯流排頻率相同,所以當CPU外頻提高後,與內存之間的交換速度也相應得到了提高,對提高電腦整體運行速度影響較大。
CPU的倍頻全稱是倍頻系數
倍頻系數是指CPU主頻與外頻之間的相對比例關系。在相同的外頻下,倍頻越高CPU的頻率也越高。但實際上,在相同外頻的前提下,高倍頻的CPU本身意義並不大。這是因為CPU與系統之間數據傳輸速度是有限的,一味追求高倍頻而得到高主頻的CPU就會出現明顯的「瓶頸」效應——CPU從系統中得到數據的極限速度不能夠滿足CPU運算的速度。
CPU的核心工作頻率與外頻之間存在著一個比值關系,這個比值就是倍頻系數,簡稱倍頻。理論上倍頻是從1.5一直到無限的,但需要注意的是,倍頻是以0.5為一個間隔單位。外頻與倍頻相乘就是主頻,所以其中任何一項提高都可以使CPU的主頻上升。
原先並沒有倍頻概念,CPU的主頻和系統匯流排的速度是一樣的,但CPU的速度越來越快,倍頻技術也就應允而生。它可使系統匯流排工作在相對較低的頻率上,而CPU速度可以通過倍頻來無限提升。那麼CPU主頻的計算方式變為:主頻
=
外頻
x
倍頻。也就是倍頻是指CPU和系統匯流排之間相差的倍數,當外頻不變時,提高倍頻,CPU主頻也就越高。
一個CPU默認的倍頻只有一個,主板必須能支持這個倍頻。因此在選購主板和CPU時必須注意這點,如果兩者不匹配,系統就無法工作。此外,現在CPU的倍頻很多已經被鎖定,無法修改。
CPU緩存(Cache
Memory)
位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
緩存是為了解決CPU速度和內存速度的速度差異問題。內存中被CPU訪問最頻繁的數據和指令被復制入CPU中的緩存,這樣CPU就可以不經常到象「蝸牛」一樣慢的內存中去取數據了,CPU只要到緩存中去取就行了,而緩存的速度要比內存快很多。
這里要特別指出的是:
1.因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速度就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。
2..因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。
匯流排
是將計算機微處理器與內存晶元以及與之通信的設備連接起來的硬體通道。前端匯流排將CPU連接到主內存和通向磁碟驅動器、數據機以及網卡這類系統部件的外設匯流排。人們常常以MHz表示的速度來描述匯流排頻率。
前端匯流排(FSB)
頻率是直接影響CPU與內存直接數據交換速度。由於數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率,即數據帶寬=(匯流排頻率×數據位寬)÷8。目前PC機上所能達到的前端匯流排頻率有266MHz、333MHz、400MHz、533MHz、800MHz,1066MHz,1333MHz幾種,前端匯流排頻率越大,代表著CPU與內存之間的數據傳輸量越大,更能充分發揮出CPU的功能。現在的CPU技術發展很快,運算速度提高很快,而足夠大的前端匯流排可以保障有足夠的數據供給給CPU。較低的前端匯流排將無法供給足夠的數據給CPU,這樣就限制了CPU性能得發揮,成為系統瓶頸。
外頻與前端匯流排頻率的區別:前端匯流排的速度指的是數據傳輸的速度,外頻是CPU與主板之間同步運行的速度。也就是說,100MHz外頻特指數字脈沖信號在每秒鍾震盪一千萬次;而100MHz前端匯流排指的是每秒鍾CPU可接受的數據傳輸量是100MHz×64bit=6400Mbit/s=800MByte/s(1Byte=8bit)。
主板支持的前端匯流排是由晶元組決定的,一般都帶有足夠的向下兼容性。如865PE主板支持800MHz前端匯流排,那安裝的CPU的前端匯流排可以是800MHz,也可以是533MHz,但這樣就無法發揮出主板的全部功效。

Ⅹ 編譯程序所需要的時間和電腦的性能有關系么

有關系的
當需要編譯工程的復雜度一定的時候,電腦性能越好,編譯所需要時間越短;反之,則時間越長。
當電腦性能一定的時候,工程越復雜,則編譯所需要的時間越長;反之,則時間越短。

閱讀全文

與cpu和編譯速度相關的資料

熱點內容
乾眼症程序員 瀏覽:239
樂動達人安卓版有什麼游戲 瀏覽:484
c523壓縮比 瀏覽:543
命令語氣的人什麼心態 瀏覽:435
程序員喜歡留指甲嗎 瀏覽:516
七牛雲伺服器收費標准 瀏覽:627
時光相冊加密空間密碼忘記 瀏覽:474
華為雲為用戶提供的服務雲伺服器 瀏覽:634
minecraftlinux伺服器搭建 瀏覽:376
linux命令新建文件 瀏覽:709
長線pdf 瀏覽:607
程序員電腦支持手寫 瀏覽:414
解壓頭戴式耳機推薦 瀏覽:344
紙條app上怎麼樣看對方主頁 瀏覽:883
編譯英語單詞怎麼寫 瀏覽:249
編譯原理和匯編原理的區別 瀏覽:864
如何給加密的pdf解密 瀏覽:770
華為盒子時間同步伺服器地址 瀏覽:95
python處理excel亂碼 瀏覽:391
mysql的命令行 瀏覽:822