Intel C++ 9.0編譯器優(yōu)化效果測(cè)試 3000字_第1頁(yè)
Intel C++ 9.0編譯器優(yōu)化效果測(cè)試 3000字_第2頁(yè)
Intel C++ 9.0編譯器優(yōu)化效果測(cè)試 3000字_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

IntelC++9.0編譯器優(yōu)化效果測(cè)試3000字1引言

當(dāng)今許多計(jì)算機(jī)應(yīng)用領(lǐng)域,如天氣預(yù)報(bào)、信號(hào)處理以及軍事上的彈道跟蹤等,它們對(duì)程序處理速度的要求都是相當(dāng)高的。否那么就會(huì)導(dǎo)致結(jié)果出現(xiàn)偏差或者失去其意義。要提高程序的運(yùn)算速度,一般通過(guò)下列幾個(gè)方面的改良措施來(lái)進(jìn)行:(1)采用新的處理速度更快的硬件設(shè)備,如更快的CPU,更大的內(nèi)存,以及更快的I/O設(shè)備等。但這顯然會(huì)導(dǎo)致本錢的大量增加,并非是一種適合于任何單位的實(shí)際的改良措施。(2)更加優(yōu)化的程序設(shè)計(jì)辦法,如在程序中引入多線程、并行等處理辦法。這是一種比擬有效的辦法,當(dāng)然對(duì)程序設(shè)計(jì)人員以及編程人員的水平有更高的要求。(3)采用一些優(yōu)化軟件,這也是一種簡(jiǎn)便有效的辦法。另外如果和其他兩種辦法配合使用,對(duì)于一些要求大幅度提高處理速度的場(chǎng)合下,也將是非常有幫忙的。采用優(yōu)化型編譯器就屬于上面介紹的第三種辦法。處理器由于受數(shù)據(jù)相關(guān)、條件轉(zhuǎn)移和資源沖突等原因,指令級(jí)并行度受到極大的限制。通過(guò)優(yōu)化編譯器對(duì)指令序列進(jìn)行重組,以及采用軟件與硬件相結(jié)合的辦法處理數(shù)據(jù)相關(guān)、條件轉(zhuǎn)移和資源沖突等,可以大大提高處理器的指令級(jí)并行度,使在一定時(shí)間內(nèi)可發(fā)射盡可能多的指令數(shù)。

另外,優(yōu)化編譯器還能根據(jù)處理器中先行指令窗口的大小,把沒(méi)有數(shù)據(jù)相關(guān)、控制相關(guān)和功能部件沖突,或者沖突和相關(guān)比擬少的指令調(diào)度到同一個(gè)先行指令窗口中,使這些指令超越它前面的指令先發(fā)射到操作部件中去,從而提高功能部件的利用率,這樣就能進(jìn)一步提高處理器的性能。一般來(lái)講,實(shí)現(xiàn)程序的優(yōu)化調(diào)度需要軟件(主要是編譯器)和硬件的共同結(jié)合才能獲得比擬好的調(diào)度效果。IntelC++編譯器作為一款專門針對(duì)Intel型處理器進(jìn)行優(yōu)化的編譯器,它們二者的結(jié)合從理論上能實(shí)現(xiàn)優(yōu)化調(diào)度,能對(duì)程序的執(zhí)行效能有某些方面和一定程度的提高。測(cè)試中處理器故選擇Intel系列的產(chǎn)品,實(shí)際使用的處理器為Intel奔騰4處理器(1.8GHZ),內(nèi)存為256MB;操作系統(tǒng)考慮通用性和廣泛性,為WindowsXP系統(tǒng),編程環(huán)境為VisualC++6.0。

2線程額外開(kāi)銷測(cè)試

針對(duì)越來(lái)越多的多線程編程應(yīng)用,線程間的開(kāi)銷諸如線程間的切換時(shí)間、高優(yōu)先級(jí)線程的搶先時(shí)間以及線程對(duì)信號(hào)量的響應(yīng)時(shí)間等指標(biāo)成為制約程序執(zhí)行速度的一個(gè)重要方面。減少線程的額外開(kāi)銷時(shí)間對(duì)提高程序的運(yùn)行速度是非常有意義的。

2.1測(cè)試指標(biāo)這里主要包括四個(gè)測(cè)試指標(biāo),(1)線程的切換時(shí)間。(2)高優(yōu)先級(jí)線程的搶先時(shí)間。(3)信號(hào)量響應(yīng)時(shí)間。(4)線程轉(zhuǎn)異常以及異常恢復(fù)時(shí)間。

2.2測(cè)試辦法測(cè)試中,啟動(dòng)的線程開(kāi)始無(wú)條件循環(huán)運(yùn)行。以對(duì)指標(biāo)(1)的測(cè)試為例,循環(huán)中只進(jìn)行運(yùn)行次數(shù)累加和線程切換的操作,無(wú)其他附加操作,直至給出結(jié)束事件,終止線程并給出線程的運(yùn)行次數(shù)和時(shí)間。測(cè)試的計(jì)算結(jié)果都是在忽略線程本身的開(kāi)銷的情況下得出的,這里線程自身所花費(fèi)的時(shí)間通過(guò)測(cè)試比擬占總花費(fèi)的時(shí)間的比例是非常小的,對(duì)計(jì)算結(jié)果沒(méi)有太大的影響。另外假設(shè)在線程中參加對(duì)線程本身開(kāi)銷的統(tǒng)計(jì),將會(huì)引入其他的操作,同樣會(huì)有一定的時(shí)間開(kāi)銷,仍然會(huì)有誤差存在。測(cè)試中對(duì)每一個(gè)測(cè)試工程皆進(jìn)行五次重復(fù)測(cè)試,對(duì)得出的五個(gè)值取平均。

2.3測(cè)試流程這里的測(cè)試流程以對(duì)指標(biāo)(1)的測(cè)試為例以流程圖的形式加以表明,后面三項(xiàng)的測(cè)試與此相似。

2.4測(cè)試步驟

2.4.1線程切換時(shí)間測(cè)試的根本步驟(1)創(chuàng)立兩個(gè)相同優(yōu)先級(jí)的線程1和2。(2)運(yùn)行線程1得到線程1的當(dāng)前運(yùn)行次數(shù)后,立即切換到線程2。(3)運(yùn)行線程2得到線程2的當(dāng)前運(yùn)行次數(shù)后,立即切換到線程1。(4)重復(fù)第2步和第3步,直到給出結(jié)束事件。(5)得到2至4步所花費(fèi)的全部時(shí)間和兩線程分別的運(yùn)行次數(shù)。(6)計(jì)算線程間的切換時(shí)間。這里設(shè)所花費(fèi)的時(shí)間為emplasedtime,分別運(yùn)行的次數(shù)為runcount1和runcount2,那么切換時(shí)間為emplasedtime/(runcount1+runcount2-1)。下列幾項(xiàng)與此類似。

2.4.2高優(yōu)先級(jí)線程搶先時(shí)間測(cè)試的根本步驟(1)創(chuàng)立兩個(gè)不同優(yōu)先級(jí)的線程,假定線程1的優(yōu)先級(jí)高于線程2。(2)得到線程1的當(dāng)前運(yùn)行次數(shù)后,線程1將優(yōu)先級(jí)降到低于線程2,線程1被線程2搶先。(3)得到線程2的當(dāng)前運(yùn)行次數(shù)后,線程2將優(yōu)先級(jí)降到低于線程1,線程2被線程1搶先。(4)重復(fù)第2步和第3步,直到給出結(jié)束事件。(5)得到2至4步所花費(fèi)的全部時(shí)間和兩線程分別運(yùn)行的次數(shù)。(6)計(jì)算高優(yōu)先級(jí)線程搶先時(shí)間。

2.4.3信號(hào)量響應(yīng)時(shí)間測(cè)試的根本步驟(1)創(chuàng)立信號(hào)量1和信號(hào)量2。(2)建有相同優(yōu)先級(jí)的線程1和2,并分別請(qǐng)求獲得信號(hào)量1和信號(hào)量2。(3)釋放一個(gè)信號(hào)量1。(4)線程1獲得信號(hào)量1,得到當(dāng)前運(yùn)行次數(shù)后,立即釋放信號(hào)量2。(5)線程2獲得信號(hào)量2,得到當(dāng)前運(yùn)行次數(shù)后,立即釋放信號(hào)量1。(6)重復(fù)第4和第5步,直到給出結(jié)束事件。(7)得到4至6步所花費(fèi)的全部時(shí)間和兩線程分別運(yùn)行的次數(shù)。(8)計(jì)算線程對(duì)信號(hào)量的響應(yīng)時(shí)間。

2.4.4轉(zhuǎn)異常以及從異?;謴?fù)時(shí)間的測(cè)試步驟(1)創(chuàng)立運(yùn)行一個(gè)線程。(2)在線程中給出一個(gè)異常。(3)異常處理中得出當(dāng)前異常次數(shù)。(4)重復(fù)第2和第3步,直到給出結(jié)束事件。(5)得到2至4步所花費(fèi)的全部時(shí)間和異常產(chǎn)生的總次數(shù)。(6)計(jì)算轉(zhuǎn)異常以及從異?;謴?fù)的時(shí)間。

2.5測(cè)試結(jié)果

表1線程額外開(kāi)銷測(cè)試比照測(cè)試工程線程切換時(shí)間高優(yōu)先級(jí)搶占時(shí)間信號(hào)量響應(yīng)時(shí)間轉(zhuǎn)異常以及從異?;謴?fù)時(shí)間未使用IntelC++編譯器(us)1.122.272.3814.59使用IntelC++編譯器(us)1.092.262.379.212.6測(cè)試結(jié)論從以上四項(xiàng)的測(cè)試結(jié)果可以看出,除了轉(zhuǎn)異常以及從異?;謴?fù)在使用了IntelC++編譯器后,執(zhí)行效率有了較大提高(約能提高1/3)外,其他幾項(xiàng)在使用編譯器前后幾乎沒(méi)有什么變化。從這里可以看出使用IntelC++編譯器編譯的代碼對(duì)處理異常時(shí)的處理器能有優(yōu)化效果,執(zhí)行效率能有較大的提高;對(duì)于線程間的響應(yīng)和切換卻幾乎達(dá)不到優(yōu)化的效果。

3數(shù)學(xué)函數(shù)運(yùn)算測(cè)試

前面提到的諸多應(yīng)用領(lǐng)域,大量的數(shù)學(xué)運(yùn)算是必需的。許多程序的主體就是大量的數(shù)學(xué)運(yùn)算,運(yùn)算速度對(duì)程序的執(zhí)行速度也就會(huì)有決定性的影響。假設(shè)能提高數(shù)學(xué)運(yùn)算的速度,相應(yīng)的程序的執(zhí)行效率就將會(huì)得到提高。

3.1測(cè)試工程測(cè)試工程包括常用的三角函數(shù)運(yùn)算和一些開(kāi)方、次方、求模、對(duì)數(shù)等常規(guī)運(yùn)算。畢竟大量的復(fù)雜的運(yùn)算也是由以上運(yùn)算組合的。

3.2測(cè)試辦法這里對(duì)每一項(xiàng)的測(cè)試都使用相同的測(cè)試辦法,即讓每種運(yùn)算都運(yùn)行固定的大量次數(shù)(這里采用百萬(wàn)次),得到運(yùn)行前后的時(shí)間值,求出二者之間的差值,即是運(yùn)行固定次數(shù)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論