2009-10-30 27 views
3

我一直在努力提高產品的構建時間。我們正在使用持續集成,我們的構建現在需要2個小時才能運行。爲什麼我的Visual C++ 2008 x64的構建速度比x86構建慢5倍?

我已經看過了NANT時機,看到了很多的是慢於他們應該的地方,但我們的Visual C++項目的一個跳出來的是64位版本。這裏的相比86的定時的一個例子建立相同的代碼:

推出的Win32:8' 49" 推出64:41' 8"

64爲約5倍慢。再次,這是爲了完全相同的代碼。

有其他人遇到這種x86和x64之間建立時間差距?任何關於縮小差距的建議?

注意:我知道總體上提高構建性能的工具,例如Xoreax分佈式構建和TeamCity併發構建,我也將調查這兩者,但我不禁感到應該有某種方式可以使x64恢復正常,而無需使用第三方工具。

回答

2

檢查項目構建設置上是相同的。當你選擇x64時,VS基本上加載了新的項目設置,並且它們可能非常不同。例如,檢查增量構建是否在x64中啓用。

+0

很好的建議,但我已經檢查了。爲了支持整個程序優化和鏈接時代碼生成,增量鏈接被禁用,而IIRC與增量鏈接不兼容。 在任何情況下,我們從建立一個乾淨的源代碼樹開始,所以增量鏈接我的理解它並沒有提供太多的性能提升 – anelson 2009-10-30 22:00:15

+0

我更仔細地看了看,發現我已經關閉預編譯頭用於x64配置回來的時候,我們正在使用VS 2k5,並且在升級到2k8時再也沒有打開它。現在構建時間更合理。 – anelson 2009-11-02 19:27:25

0

我不知道,但我不會感到驚訝,如果整個代碼生成器被用於基於x64的重寫。如果您執行測試構建並使用進程資源管理器查看編譯器引入的DLL,則可以在構建兩個不同的目標時查看編譯器是否使用完全不同的二進制文件。您可能會發現x64後端是一個託管的.NET應用程序,而x86則是舊式本地應用程序。只是一個猜測。可能不真實。您可以在運行進程管理器時調查兩者的CPU /磁盤/內存使用情況。

相關問題