Intel C++ 9.0編譯器最佳化效果測試

來源:互聯網
上載者:User

摘 要 本文主要針對Intel C++ 9.0編譯器在Visual C++ 6.0環境下對一些常用的功能性操作的最佳化作用進行了測實驗證。主要從對採用編譯器前後的程式已耗用時間進行比較來進行判斷。測試範圍主要集中於對線程的切換時間,轉異常以及異常恢復,高優先順序線程搶先時間以及訊號量回應時間方面。此外,還對一些常用的數學函數的已耗用時間進行了測試比較。得出的測試資料和結論能對採用此編譯器的使用者有一定的參考價值和借鑒作用。

關鍵詞 Intel C++,Visual C++,編譯器,最佳化

引言

當今許多電腦應用領域,如天氣預報、訊號處理以及軍事上的彈道跟蹤等,它們對程式處理速度的要求都是相當高的。否則就會導致結果出現偏差或者失去其意義。要提高程式的運算速度,一般通過以下幾個方面的改進措施來進行:(1)採用新的處理速度更快的硬體裝置,如更快的CPU,更大的記憶體,以及更快的I/O裝置等。但這顯然會導致成本的大量增加,並非是一種適合於任何單位的實際的改進措施。(2)更加最佳化的程式設計方法,如在程式中引入多線程、並行等處理方法。這是一種比較有效方法,當然對程式設計人員以及編程人員的水平有更高的要求。(3)採用一些最佳化軟體,這也是一種簡便有效方法。另外如果和其他兩種方法配合使用,對於一些要求大幅度提高處理速度的場合下,也將是非常有協助的。

採用最佳化型編譯器就屬於上面介紹的第三種方法。處理器由於受資料相關、條件轉移和資源衝突等原因,指令級並行度受到極大的限制。通過最佳化編譯器對指令序列進行重組,以及採用軟體與硬體相結合的方法處理資料相關、條件轉移和資源衝突等,可以大大提高處理器的指令級並行度,使在一定時間內可發射儘可能多的指令數。另外,最佳化編譯器還能根據處理器中先行指令視窗的大小,把沒有資料相關、控制相關和功能組件衝突,或者衝突和相關比較少的指令調度到同一個先行指令視窗中,使這些指令超越它前面的指令先發射到操作組件中去,從而提高功能組件的利用率,這樣就能進一步提高處理器的效能。

一般來講,實現程式的最佳化調度需要軟體(主要是編譯器)和硬體的共同結合才能獲得比較好的調度效果。Intel C++ 編譯器作為一款專門針對Intel 型處理器進行最佳化的編譯器,它們二者的結合從理論上能實現最佳化調度,能對程式的執行效能有某些方面和一定程度的提高。測試中處理器應選擇Intel系列的產品,實際使用的處理器為Intel 奔騰4處理器(1.8GHZ),記憶體為256MB;作業系統考慮通用性和廣泛性,為Windows XP系統,編程環境為Visual C++ 6.0。

線程額外開銷測試

針對越來越多的多線程編程應用,線程間的開銷諸如線程間的切換時間、高優先順序線程的搶先時間以及線程對訊號量的回應時間等指標成為制約程式執行速度的一個重要方面。減少線程的額外開銷時間對提高程式的運行速度是非常有意義的。

1、測試單位

這裡主要包括四個測試單位,(1)線程的切換時間。(2)高優先順序線程的搶先時間。(3)訊號量回應時間。(4)線程轉異常以及異常恢復。

2、測試方法

測試中,啟動的線程開始無條件迴圈運行。以對指標(1)的測試為例,迴圈中只進行運行次數累加和線程切換的操作,無其他附加操作,直至給出結束事件,終止線程並給出線程的運行次數和時間。測試的計算結果都是在忽略線程本身的開銷的情況下得出的,這裡線程自身所花費的時間通過測試比較佔總花費的時間的比例是非常小的,對計算結果沒有太大的影響。另外若線上程中加入對線程本身開銷的統計,將會引入其他的操作,同樣會有一定的時間開銷,仍然會有誤差存在。測試中對每一個測試專案皆進行五次重複測試,對得出的五個值取平均。

3、測試流程

這裡的測試流程以對指標(1)的測試為例以流程圖的形式加以說明,後面三項的測試與此相似。

4、測試步驟

4.1 線程切換時間測試的基本步驟

(1)建立兩個相同優先順序的線程1和2。

(2)運行線程1得到線程1的當前運行次數後,立即切換到線程2。

(3)運行線程2得到線程2的當前運行次數後,立即切換到線程1。

(4)重複第2步和第3步,直到給出結束事件。

(5)得到2至4步所花費的全部時間和兩線程分別的運行次數。

(6)計算線程間的切換時間。

這裡設所花費的時間為emplasedtime,分別啟動並執行次數為runcount1和runcount2,則切換時間為emplasedtime/ (runcount1+runcount2-1)。以下幾項與此類似。

圖1 線程切換時間測試流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.