2009-07-08 8 views

Antwort

6

Ich habe gesehen, dass es merklich schneller (~ 4x in meiner Erfahrung) für einige rechenintensive (Zahlen-Crunching) Anwendungen. Das Beste ist, dass es kostenlos in reinen verwalteten Fällen zur Verfügung steht. Sie müssen nicht noch einmal alles neu kompilieren, um die Vorteile zu erhalten. Außerdem habe ich gehört, dass das x64 JIT aggressivere Optimierungen bietet.

Der größte Nachteil ist wahrscheinlich nicht in der Lage, 32-Bit-COM-Komponenten im Prozess zu laden.

5

Ihre Anwendung läuft möglicherweise nicht schneller. Ich habe Verbesserungen für einige Anwendungen gesehen, aber nicht für andere. Es hängt davon ab, wie sehr Ihre Anwendung 64 Bit (math) -Operationen nutzt und ob dies die größeren Daten und den Code, den x64 verwendet, ausgleicht und daher in den Befehls- und Datencache geladen werden muss, bevor sie ausgeführt werden kann.

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

Dies ist lesenswert. Es ist alt (.NET 2.0), aber es gilt immer noch viel; Zeigergrößen, COM-Interop etc:

Migrating 32-bit Managed Code to 64-bit

Es lohnt sich auch zu wissen, dass auch auf x64 die CLR ein einzelnes Objekt Größenbeschränkung von 2 GB hat. Dies ist kein Problem für 99% der Szenarien, aber wenn Sie zu x64 wechseln, liegt das vermutlich daran, dass Sie möglicherweise mit großen Datenmengen arbeiten. Sehen Sie hier für weitere Diskussion:

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

So. Wenn Ihre Anwendung keine Daten verwendet, die nicht in den 32-Bit-Speicher passen oder 64-Bit-Operationen stark nutzen, sehen Sie möglicherweise nicht viel, wenn überhaupt Verbesserungen.

Der andere Nachteil ist, dass Visual Studio für x64-Anwendungen hat einige Einschränkungen:

  • Bearbeiten und Fortfahren nicht verfügbar für 64-Bit-Debugging.

  • Sie können nicht in gemischtem Modus debuggen, ruft von nativen Code in verwaltetem Code oder umgekehrt, in 64-Bit-Code.

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

Hinweis: Die 64-Bit-C++ Compiler nicht standardmäßig installiert sind. Sie müssen sie während der Installation auswählen.

Ich habe auch gerade gefunden (weil ich eine x64-Anwendung selbst optimieren).

"Portieren und Optimierung von Anwendungen auf 64-Bit-Windows für AMD64 ..."

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

Hat viele gute Hinweise auf Compiler-Schalter und dergleichen.

+2

"64-Bit-Compiler sind nicht standardmäßig installiert": Das OP spricht über .NET-Anwendungen. Dies gilt nur für den systemeigenen C++ - Compiler und nicht für VB.NET/C#. –

+0

Das war eine Randnotiz. Ich habe es oben geklärt. –

1

64-Bit-Anwendungen werden nicht immer schneller als 32-Bit laufen. Die beiden Blog-Posts unten spricht darüber:
http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Größere Zeiger bedeutet, mehr Speicher und Cache Verbrauch und die Anzahl der Bytes CPU-Cache verfügbar ist die gleiche sowohl für 32-Bit- und 64 -Bit Prozesse.

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

Ein 64-Bit-Adressraum für den Prozess nicht Ihnen mit Seite Fehler, außer in vielleicht indirekten Wegen gehen zu helfen, und es wird auf jeden Fall in direkter Weise verletzt weil Ihre Daten größer sind. Im Gegensatz dazu könnte ein 64 Bit Betriebssystem Ihnen sehr helfen! Wenn Sie als 32-Bit-App auf einem 64-Bit-Betriebssystem laufen, dann erhalten Sie alle 4G Adressraum und all das könnte durch physischen Speicher (wenn Sie RAM haben) auch ohne Sie unterstützt werden 64 Bit Zeiger selbst.