2009-07-08 9 views

Respuesta

6

He visto que es notablemente más rápido (~ 4x en mi experiencia) para algunas aplicaciones computacionalmente pesadas (crujido de números). Lo mejor es que es gratis en casos administrados puros. Ni siquiera tiene que volver a compilar nada para obtener los beneficios. Además, he escuchado que el x64 JIT tiene optimizaciones más agresivas.

La mayor desventaja es probablemente no poder cargar componentes COM de 32 bits en proceso.

5

Su aplicación puede o no ejecutarse más rápido. He visto mejoras para algunas aplicaciones pero no para otras. Depende de cuánto aprovecha su aplicación las operaciones de 64 bits (matemáticas) y si esto compensa los datos más grandes y el código que utiliza x64 y, por lo tanto, tiene que cargarse en la memoria caché de datos e instrucciones antes de que pueda ejecutarse.

http://blogs.msdn.com/b/joshwil/archive/2006/07/18/670090.aspx

Esto es digno de una lectura. Es viejo (.NET 2.0) pero aún aplica mucho; tamaños de los punteros, etc interoperabilidad COM:

Migrating 32-bit Managed Code to 64-bit

También vale la pena saber que incluso en x64 CLR tiene una única restricción de tamaño del objeto de 2Gb. Esto no es un problema en el 99% de los escenarios, pero si te mueves a x64 probablemente sea porque podrías estar trabajando con grandes conjuntos de datos. Vea aquí para más discusión:

Are C# Strings (and other .NET API's) limited to 2GB in size?

So. A menos que su aplicación utilice datos que no se ajustan a la memoria de 32 bits o hace un uso intensivo de las operaciones de 64 bits, es posible que no vea mucho, si es que mejora.

El otro inconveniente es que Visual Studio para aplicaciones de 64 bits tiene algunas limitaciones:

  • Editar y continuar no está disponible para la depuración de 64 bits.

  • No se puede depurar en modo mixto, llama a desde código nativo a código administrado, o viceversa, en código de 64 bits.

Ver: http://msdn.microsoft.com/en-us/library/ms184681(VS.80).aspx

Nota: Los compiladores de 64 bits C++ no se instalan por defecto. Debes seleccionarlos durante la instalación.

También acabo de encontrar esto (porque estoy optimizando una aplicación x64).

"Trasladar y optimización de las aplicaciones de Windows de 64 bits para AMD64 ..."

http://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/AMD64_PortApp.doc

tiene un montón de buenos consejos sobre modificadores del compilador y similares.

+2

"los compiladores de 64 bits no están instalados por defecto": OP está hablando de aplicaciones .NET. Esto solo es cierto para el compilador nativo de C++ y no para VB.NET/C#. –

+0

Esta fue una nota al margen. Lo he aclarado arriba. –

1

Las aplicaciones de 64 bits no siempre se ejecutarán a más de 32 bits. Las dos entradas de blog a continuación habla de ello:
http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

más grandes punteros significa más memoria y consumo de memoria caché, y el número de bytes de caché de la CPU disponible es el mismo tanto para 32 bits y 64 -bit procesos.

http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

Un espacio de direcciones de 64 bits para el proceso no va a ayudarle con la página faltas excepto en formas quizá indirectos, y que sin duda te hará daño en formas directas porque sus datos son más grandes. Por el contrario, un sistema operativo de 0 bit de 64 bits podría ayudarlo mucho. Si está ejecutando una aplicación de 32 bits en un sistema operativo de 64 bits, obtendrá todo el espacio de direcciones 4G y todo eso podría ser respaldado por memoria física (si tiene RAM) incluso sin usar 64 bit apunta usted mismo.