Leistung und Arbeitsspeicherverbrauch unter WOW64
Die Leistung und der Arbeitsspeicherverbrauch unter WOW64 werden durch die folgenden Faktoren bestimmt:
- Prozessorhardware. Die Anweisungsemulation erfolgt auf dem Chip. Auf dem x64-Prozessor werden x86-Anweisungen vom Prozessor nativ ausgeführt. Daher ähnelt die Ausführungsgeschwindigkeit unter WOW64 auf x64 der Geschwindigkeit unter 32-Bit-Windows. Auf dem Intel Itanium-Prozessor und allen ARM64-Prozessoren ist mehr Software an der Emulation beteiligt, und die Leistung leidet daher.
- API-Thunk-Aufwand. Dieser Aufwand ist im Vergleich zu Systemaufrufen an den NT-Kernel gering. NT-Kernelfunktionen sollen selten aufgerufen werden.
- Größe des virtuellen Arbeitsspeichers. Auf dem Intel Itanium-Prozessor erhöht WOW64 erheblichen Aufwand, wenn zwei oder mehr Instanzen derselben 32-Bit-Anwendung gleichzeitig ausgeführt werden. Dies liegt an den nativen 8 KB-Seiten auf dem Intel Itanium, wodurch die Emulation der nativen 4 KB-Seiten auf der x86-Architektur erschwert wird (mehr Seiten sind als beschreibbar gekennzeichnet; alle schreibbaren Seiten sind privat für den Prozess). Dies kann sich negativ auf die Skalierbarkeit von Terminaldiensten auf bestimmten Auftragsverarbeitern auswirken. Dies ist nicht der Fall für den x64-Prozessor.
- Arbeitssatz. WOW64 erhöht die Größe des Arbeitssatzes der Anwendung.
WOW64 ermöglicht 32-Bit-Anwendungen die Nutzung des 64-Bit-Kernels. 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 bei der systemeigenen Ausführung auf x86-basierten Systemen möglich sind, da WOW64 für jeden Thread einen zusätzlichen 64-Bit-Stapel (in der Regel 512 KB) zuweist. Darüber hinaus sind einige Adressräume für WOW64 selbst reserviert und die von ihr verwendeten Datenstrukturen. Der reservierte Betrag hängt vom Auftragsverarbeiter ab; mehr ist auf intel Itanium reserviert als auf den x64- oder ARM64-Prozessoren.
Wenn die Anwendung das IMAGE_FILE_LARGE_ADDRESS_AWARE Flag im Bildheader festgelegt hat, empfängt jede 32-Bit-Anwendung 4 GB virtuellen Adressraum in der WOW64-Umgebung. Wenn das IMAGE_FILE_LARGE_ADDRESS_AWARE Flag nicht festgelegt ist, empfängt jede 32-Bit-Anwendung 2 GB virtuellen Adressraum in der WOW64-Umgebung.