2011-08-23 7 views
5

Tengo una aplicación .Net4 WinForms que hace referencia a conjuntos .Net2 de terceros, que contienen controles visuales pesados ​​en gráficos. Me di cuenta de una gran mejora en el rendimiento visual de la aplicación cuando accidentalmente lo cambié de AnyCpu a modo de compilación x86. Mi plataforma de desarrollo es x64 Windows 7. La mejora es por un factor de al menos dos cuando los controles muestran sus elementos gráficos.. Los ensamblados Net2 alojados en la aplicación .Net4 funcionan mejor en x86 que en el modo AnyCpu?

¿Es esto un hecho conocido o estoy haciendo algo mal?

Respuesta

3

ver a estos dos artículos al respecto:

AnyCPU Exes are usually more trouble than they're worth

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

Véase también este post sobre 64-bit de código: Should I choose to take advantage of 64-bit?, que establece claramente que, por ejemplo, Paint.NET funciona mejor bajo en Modo de 64 bits, porque el desarrollador optimizó el código para 64 bits.

Por lo tanto, no creo que esté haciendo algo mal, pero tal vez los ensamblados de .NET de terceros que está utilizando podrían mejorarse específicamente cuando se ejecuta en un proceso de 64 bits.

+0

Esos otros ensambles utilizan rutinas de dibujo gestionado de System.Drawing (que IIRC acaba de envolver llamadas GDI +), por lo que no estoy seguro de cómo podrían mejorarse para 64 bits, ya que no hay optimizaciones específicas de plataforma en .Net administrado (que saber de). –

2

Esto no me sorprendería. Cuando configura la aplicación para compilar a "Cualquier CPU", el CLR genera una aplicación que el jiter en la máquina del usuario debe compilar aún más para que se ajuste mejor a su arquitectura. Si lo configura en "x86", su compilador dev compila la aplicación para una máquina x86, lo que reduce la carga de los clientes jiter.

+0

¿Qué es 'jiter'? – abatishchev

+0

Lo siento. JIT significa "Just in Time" y la referencia a JITer significa el compilador "just-in-time" que compila el código IL en el código máquina específico para la máquina del usuario cuando se inicia la aplicación por primera vez. – RLH

+0

Sé lo que es el compilador JIT pero nunca lo usé para ver a JITer como compilador JIT. – abatishchev

Cuestiones relacionadas