Prestazioni e consumo di memoria in WOW64
Le prestazioni e il consumo di memoria in WOW64 sono determinati dai fattori seguenti:
- Hardware del processore. L'emulazione delle istruzioni viene eseguita sul chip. Nel processore x64 le istruzioni x86 vengono eseguite in modo nativo dal processore. Pertanto, la velocità di esecuzione in WOW64 su x64 è simile alla velocità in Windows a 32 bit. Nel processore Intel Itanium e in tutti i processori ARM64, un maggior numero di software è coinvolto nell'emulazione e le prestazioni risentono di conseguenza.
- Sovraccarico dell'API per le API. Questo sovraccarico è ridotto rispetto alle chiamate di sistema al kernel NT. Le funzioni del kernel NT devono essere chiamate raramente.
- Dimensioni della memoria virtuale. Nel processore Intel Itanium WOW64 aggiunge un sovraccarico significativo se due o più istanze della stessa applicazione a 32 bit vengono eseguite simultaneamente. Ciò è dovuto alle pagine native di 8 KB in Intel Itanium, che complica l'emulazione delle pagine native di 4 KB nell'architettura x86 (più pagine sono contrassegnate come scrivibili; tutte le pagine scrivibili sono private per il processo). Ciò può influire negativamente sulla scalabilità di Servizi terminal in determinati processori. Questo non è il caso per il processore x64.
- Working set. WOW64 aumenta le dimensioni del working set dell'applicazione.
WOW64 consente alle applicazioni a 32 bit di sfruttare il kernel a 64 bit. Pertanto, le applicazioni a 32 bit possono usare un numero maggiore di handle del kernel e handle di finestra. Tuttavia, le applicazioni a 32 bit potrebbero non essere in grado di creare quanti thread in WOW64 possono essere eseguite in modo nativo nei sistemi basati su x86 perché WOW64 alloca uno stack a 64 bit aggiuntivo (in genere 512 KB) per ogni thread. Inoltre, alcune quantità di spazio indirizzi sono riservate per WOW64 stesso e le strutture di dati usate. L'importo riservato dipende dal processore; più è riservato su Intel Itanium rispetto ai processori x64 o ARM64.
Se l'applicazione ha il flag IMAGE_FILE_LARGE_ADDRESS_AWARE impostato nell'intestazione dell'immagine, ogni applicazione a 32 bit riceve 4 GB di spazio indirizzi virtuale nell'ambiente WOW64. Se il flag IMAGE_FILE_LARGE_ADDRESS_AWARE non è impostato, ogni applicazione a 32 bit riceve 2 GB di spazio indirizzi virtuale nell'ambiente WOW64.