Leistung und Arbeitsspeicherverbrauch unter WOW64

Die Leistung und der Arbeitsspeicherverbrauch unter WOW64 werden durch die folgenden Faktoren bestimmt:

  • Prozessorhardware. Die Anweisungsemulation wird auf dem Chip ausgeführt. Auf dem x64-Prozessor werden x86-Anweisungen vom Prozessor nativ ausgeführt. Daher ist die Ausführungsgeschwindigkeit unter WOW64 unter x64 der Geschwindigkeit unter 32-Bit-Windows ähnlich. Auf dem Intel Itanium-Prozessor und allen ARM64-Prozessoren ist mehr Software an der Emulation beteiligt, und die Leistung leidet dadurch.
  • API-Thunk-Mehraufwand. Dieser Mehraufwand ist im Vergleich zu Systemaufrufen an den NT-Kernel gering. NT-Kernelfunktionen sollen nur selten aufgerufen werden.
  • Größe des virtuellen Arbeitsspeichers. Auf dem Intel Itanium-Prozessor führt WOW64 zu einem erheblichen Mehraufwand, wenn zwei oder mehr Instanzen derselben 32-Bit-Anwendung gleichzeitig ausgeführt werden. Dies ist auf die nativen 8 KB-Seiten auf dem Intel Itanium zurückzuführen, die die Emulation der nativen 4-KB-Seiten in der x86-Architektur erschweren (mehr Seiten werden als beschreibbar markiert; alle schreibbaren Seiten sind für den Prozess privat). Dies kann sich negativ auf die Skalierbarkeit von Terminaldiensten auf bestimmten Prozessoren auswirken. Dies ist für den x64-Prozessor nicht der Fall.
  • Arbeitssatz. WOW64 erhöht die Größe des Arbeitssatzes der Anwendung.

WOW64 ermöglicht es 32-Bit-Anwendungen, den 64-Bit-Kernel zu nutzen. Daher können 32-Bit-Anwendungen eine größere Anzahl von Kernelhandles und Fensterhandles verwenden. 32-Bit-Anwendungen können jedoch möglicherweise nicht so viele Threads unter WOW64 erstellen, wie sie können, wenn sie nativ auf x86-basierten Systemen ausgeführt werden, da WOW64 einen zusätzlichen 64-Bit-Stapel (normalerweise 512 KB) für jeden Thread zuordnet. Darüber hinaus ist ein teil des Adressraums für WOW64 selbst und die datenstrukturen reserviert, die es verwendet. Der reservierte Betrag hängt vom Auftragsverarbeiter ab. Auf dem Intel Itanium ist mehr reserviert als auf den x64- oder ARM64-Prozessoren.

Wenn für die Anwendung das flag IMAGE_FILE_LARGE_ADDRESS_AWARE im Imageheader festgelegt ist, empfängt jede 32-Bit-Anwendung 4 GB virtuellen Adressraum in der WOW64-Umgebung. Wenn das flag IMAGE_FILE_LARGE_ADDRESS_AWARE nicht festgelegt ist, erhält jede 32-Bit-Anwendung 2 GB virtuellen Adressraum in der WOW64-Umgebung.