2011-08-23 79 views
5

我有一個.Net4 WinForms應用程序引用第三方.Net2程序集,其中包含圖形沉重的視覺控制。當我意外地將它從AnyCpu切換到x86編譯模式時,我注意到了應用程序視覺性能的一個巨大的。我的開發平臺是x64 Windows 7.當控件渲染圖形元素時,改進至少是兩個因素。.Net4應用程序中的.Net4應用程序在x86中執行得比在AnyCpu模式下更好?

這是一個已知的事實還是我做錯了什麼?

回答

3

見一下這兩篇文章:

AnyCPU Exes are usually more trouble than they're worth

Visual Studio: Why is there no 64 bit version? (yet)

參見這篇文章約64位代碼:Should I choose to take advantage of 64-bit?,它明確規定,例如Paint.NET運作下更好64位模式,因爲開發人員優化了64位代碼。

所以,我不認爲是做錯了什麼,但也許你正在使用的第三方.NET程序集可以改進,特別是在64位進程中運行。

+0

那些其他程序集使用System.Drawing中的託管繪圖例程(IIRC只是封裝了GDI +調用),所以我不確定它們如何在64位上得到改進,因爲在託管的.Net中沒有特定於平臺的優化(即I瞭解)。 –

2

這不會讓我感到驚訝。當您將應用程序設置爲「Any CPU」時,CLR會生成一個應用程序,用戶計算機上的jiter必須進一步編譯以最適合其架構。如果將其設置爲「x86」,則您的dev編譯器會編譯x86機器的應用程序,這會減少客戶端jiter的負載。

+0

什麼是'jiter'? – abatishchev

+0

對不起。 JIT代表「Just in Time」,對JITer的引用意味着「即時」編譯器,該編譯器在應用程序第一次啓動時將IL代碼編譯爲特定於用戶機器的機器代碼。 – RLH

+0

我知道什麼是JIT編譯器,但從來沒有用JITer作爲JIT編譯器。 – abatishchev

相關問題