Frage

Ich weiß, dass .NET ist JIT zusammengestellt, um die Architektur Sie nur, bevor die app ausgeführt wird, aber nicht den JIT-compiler eine Optimierung für 64-bit-Architektur überhaupt?

Gibt es etwas, das getan werden muss, als bei der Programmierung einer app, die läuft auf eine 64bit system?(d.h.Wird mit Int64 Verbesserung der Leistung und wird der JIT-compiler automatisch Int64 arbeiten auf 32-bit-Systemen?)

War es hilfreich?

Lösung

Die 64-bit JIT ist anders von den einen für 32bit, also würde ich erwarten, dass einige Unterschiede in der Ausgabe - aber ich würde nicht wechseln auf 64bit nicht nur für, dass, und ich würde nicht erwarten, zu viel zu gewinnen-Geschwindigkeit (falls vorhanden) in der CPU-Zeit durch die Umstellung auf 64bit.

Sie werden feststellen, eine große Leistung Verbesserung, wenn Sie Ihre app nutzt viel Speicher hat der PC genug RAM zu halten mit es.Ich habe festgestellt, dass 32bit .NET-apps neigen dazu, zu starten, werfen out of memory exceptions, wenn man auf rund 1,6 gb im Einsatz, aber Sie beginnen zu flattern, die Festplatte durch paging lange bevor, die - so dass Sie am Ende ist-I/O-gebunden.

Grundsätzlich, wenn Sie Flaschenhals ist die CPU dann 64bit ist unwahrscheinlich, um zu helfen.Wenn Ihr Engpass ist, ist der Speicher dann sollten Sie sehen, eine große Verbesserung.

Wird mit Int64 Verbesserung der Leistung und wird der JIT-compiler automatisch Int64 arbeiten auf 32-bit-Systeme

Int64 bereits funktioniert sowohl auf 32-bit und 64-bit-Systeme, aber es wird schneller laufen auf 64bit.Also, wenn Sie sind meistens der Anzahl Knirschen mit Int64, laufen auf einem 64bit system sollte helfen.

Das wichtigste ist, zu Messen Ihre Leistung.

Andere Tipps

Diese ist ein guter Artikel zum Thema, die von einem der Menschen, die arbeitete auf die 64-bit-JIT.Im Grunde, es sei denn, Sie benötigen unbedingt den Adressraum, der 64-bit-bieten kann, oder muss 64-bit-Mathematik, werden Sie wahrscheinlich verlieren Leistung.Als Zeiger sind größer, cache effektiv halbiert, zum Beispiel.

Ich habe bemerkt, 64-bit-Version, die sehr viel langsamer.

Wie bereits erwähnt, die 64-bit-JIT-compiler verhält sich anders als die der x86-JIT-compiler.Die x86-compiler nutzen einige Optimierungen, die der x64 nicht.

Zum Beispiel in .NET 3.5 der 32-bit-JIT wird die inline-Funktion Anrufe mit Strukturen als Argumente, aber die 64-bit-JIT nicht.

In der Produktion code, den ich gesehen habe, x86 builds ausgeführt, so viel wie 20% schneller als die x64-builds (ohne sonstige änderungen)

Um zu summieren, verwenden Sie die 64-bit-nur, wenn

  1. Benötigen Sie den zusätzlichen Speicher, und es gibt keine Möglichkeit um ihn herum.
  2. Programmieren Sie z.B.wissenschaftliche apps und müssen die erhöhten mathematische Präzision

Auf jeden anderen Aspekt, als von heute, die 64-bit-compiler, der in .NET ist ein Schritt nach unten.

Performance Optimierungen durchgeführt, die in die .NET Compiler sind ein großes Problem.

Performance-Engpässe werden die gleichen sein, unabhängig davon, ob die Architektur ist in der 32 - oder 64-bit.Performance-Probleme sind oft das Ergebnis von sub-optimalen algorithmen — Sie haben die Wahl zwischen 32 - und 64-bit-Typen nicht signifikant auf die Leistung auswirken.

Am wichtigsten ist, nicht versuchen, zu verbessern die Leistung von etwas, bevor Sie gemessen haben es.Insbesondere sollten Sie-Profil mit dem code, um zu bestimmen, wo Ihre performance-Engpässe sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top