2010-03-06 36 views
1

我剛剛注意到,在我們的項目中,「啓用增強指令集」標誌沒有設置,可能只是一個疏忽。Visual studio編譯器標誌/ arch和性能

在啓用標誌之前,我想問問任何人是否看到任何現實世界的性能改進啓用它?

我想我們會看到一些改進,我們的應用程序不斷地做基於浮點的calcalations,但它不是主要部分。

+1

爲什麼不測試/測量它爲您的應用程序? – 2010-03-06 18:59:29

+0

我會,只是想知道如果其他人看到任何改進比較之前/之後 – ROAR 2010-03-06 19:15:52

回答

0

所以簡而言之:此設置僅啓用某些直接映射SSE指令的內部函數。在正常的C++程序中,您不使用這些內部函數,所以此設置不會提高性能。如果你需要更多的性能,你可以嘗試找到一個重寫你的代碼以使用SSE指令的編譯器(intel聲稱它的編譯器可以),但是它可能更適合多核(使用openMP或.net 4.0),或者使用比SSE更快,更靈活的GPU。

0

性能優勢將取決於您的項目是否使用密集的數學計算。對於許多任務(網絡,文本處理,數據管理)而言,情況並非如此,因爲在那裏沒有(或幾乎沒有)浮點操作。因此,沒有任何性能提升。

使用由編譯器生成的SSE/SSE2指令不會生成最佳性能。首先,你不會對實際的代碼生成有任何控制。在某些情況下,您需要在舊系統上使用舊版(x87)代碼,並在新系統上使用啓用SSE/SSE2的代碼。您可能還想在大多數最新的系統上利用SSE3。爲此,我建議使用cpuid指令檢查處理器類型,然後切換到可充分利用處理器功能的實現。然後,您可以在針對SSE/SSE2的實現中使用編譯器內在函數。爲了瞄準SSE3,你需要一個專用的圖書館,我試圖在互聯網上找到它。

我相信,必須存在執行處理器功能分析並允許最佳代碼切換的庫。我只需要一些時間在網上看。

相關問題