c# - significado - clr sql
El rendimiento de una aplicación C#basada en la plataforma AnyCPU vs x64 en una máquina de 64 bits (2)
Tengo que implementar una aplicación C # en una máquina de 64 bits, aunque existe una pequeña probabilidad de que también se pueda implementar en una máquina de 32 bits. ¿Debería crear dos ejecutables separados dirigidos a la plataforma x86 y x64 o debería buscar una única plataforma ejecutable ''AnyCPU'' (especificada en la opción de compilación de la propiedad del proyecto ''''. se implementa en una máquina de 64 bits frente al mismo ensamblado creado específicamente para la plataforma ''x64''?
Como nota al margen de la respuesta anterior. Puede haber problemas con el uso de P / Invoke o DotNetInterop en x86 DLL en un sistema operativo x64 usando AnyCPU. En el caso de que no haya disponible una versión de 64 bits de la DLL, puede ser necesario compilar x86 en lugar de AnyCPU, ya que el sistema operativo intentará cargar la versión de 64 bits ... y fallará.
No, no hay diferencia en el rendimiento entre la aplicación AnyCPU que se ejecuta en un Windows de 64 bits y una aplicación x64 que se ejecuta en él. Lo único que cambia la marca son algunas marcas en el encabezado del ensamblaje compilado y el CLR lo usa solo para decidir si usar x86 o x64, nada más
Si preguntara si hay una diferencia entre la aplicación x86 que se ejecuta en un Windows de 64 bits y un x64 (o AnyCPU), entonces la respuesta sería sí. Las diferencias entre los dos son:
- Obviamente, 64 bits usa referencias que son el doble de grandes que 32 bits, lo que significa un mayor consumo de memoria, pero también significa que puede usar más memoria
- Los 64 bits pueden usar más registros que están disponibles solo en el modo de 64 bits de las CPU
- El JIT de 64 bits es diferente del JIT de 32 bits, tiene un conjunto diferente de optimizaciones: por ejemplo, el JIT de 64 bits a veces usa la optimización de llamadas de cola incluso si no lo solicita específicamente usando la
tail.
instrucción (que por ejemplo C # nunca lo hace)