Wydajność i zużycie pamięci w obszarze WOW64
Wydajność i zużycie pamięci w usłudze WOW64 są określane przez następujące czynniki:
- Sprzęt procesora. Emulacja instrukcji jest wykonywana na chipie. Na procesorze x64 instrukcje x86 są wykonywane natywnie przez procesor. W związku z tym szybkość wykonywania w wersji WOW64 na x64 jest podobna do szybkości w 32-bitowym systemie Windows. Na procesorze Intel Itanium i każdym procesorze ARM64 więcej oprogramowania jest zaangażowanych w emulację, a w rezultacie występuje spadek wydajności.
- Obciążenie interfejsu API thunk. To obciążenie jest niewielkie w porównaniu z wywołaniami systemu do jądra NT. Funkcje jądra NT mają być wywoływane rzadko.
- Rozmiar pamięci wirtualnej. Na procesorze Intel Itanium WOW64 zwiększa znaczne obciążenie, jeśli co najmniej dwa wystąpienia tej samej aplikacji 32-bitowej są uruchomione współbieżnie. Wynika to z natywnych stron 8 KB na intel Itanium, co komplikuje emulację natywnych stron 4 KB w architekturze x86 (więcej stron jest oznaczonych jako zapisywalne; wszystkie strony z możliwością zapisu są prywatne dla procesu). Może to niekorzystnie wpłynąć na skalowalność usług terminalowych na niektórych procesorach. Tak nie jest w przypadku procesora x64.
- Zestaw roboczy. WOW64 zwiększa rozmiar zestawu roboczego aplikacji.
WOW64 umożliwia aplikacjom 32-bitowym korzystanie z 64-bitowego jądra. W związku z tym aplikacje 32-bitowe mogą używać większej liczby dojść jądra i uchwytów okien. Jednak aplikacje 32-bitowe mogą nie być w stanie utworzyć jak najwięcej wątków w systemie WOW64, ponieważ mogą one działać natywnie w systemach opartych na architekturze x86, ponieważ WOW64 przydziela dodatkowy stos 64-bitowy (zwykle 512 KB) dla każdego wątku. Ponadto pewna ilość przestrzeni adresowej jest zarezerwowana dla samej aplikacji WOW64 i używanych struktur danych. Ilość zarezerwowana zależy od procesora; więcej jest zarezerwowanych na Intel Itanium niż w procesorach x64 lub ARM64.
Jeśli aplikacja ma flagę IMAGE_FILE_LARGE_ADDRESS_AWARE ustawioną w nagłówku obrazu, każda aplikacja 32-bitowa otrzymuje 4 GB wirtualnej przestrzeni adresowej w środowisku WOW64. Jeśli flaga IMAGE_FILE_LARGE_ADDRESS_AWARE nie jest ustawiona, każda aplikacja 32-bitowa otrzymuje 2 GB wirtualnej przestrzeni adresowej w środowisku WOW64.