WOW64 下的效能和記憶體耗用量
WOW64 下的效能和記憶體耗用量取決於下列因素:
- 處理器硬體。 指令仿真是在晶元上執行。 在 x64 處理器上,處理器會以原生方式執行 x86 指令。 因此,在 x64 上的 WOW64 下執行速度與 32 位 Windows 下的速度類似。 在 Intel Itanium 處理器和任何 ARM64 處理器上,更多的軟體涉及模擬,因此效能會受到影響。
- API Thunk 額外負荷。 相較於 NT 核心的系統呼叫,此額外負荷很小。 NT 核心函式不常呼叫。
- 虛擬記憶體大小。 在 Intel Itanium 處理器上,如果相同 32 位應用程式的兩個或多個實例同時執行,WOW64 會增加大量額外負荷。 這是因為 Intel Itanium 上的原生 8 KB 頁面,這會使 x86 架構上的原生 4 KB 頁面模擬複雜化(更多頁面標示為可寫入;所有可寫入的頁面都屬於進程的私人頁面)。 這可能會對特定處理器上的終端機服務的延展性產生負面影響。 x64 處理器的情況並非如此。
- 工作集。 WOW64 會增加應用程式工作集的大小。
WOW64 可讓32位應用程式利用64位核心。 因此,32 位應用程式可以使用較多的核心句柄和視窗句柄。 不過,32 位應用程式可能無法在以 x86 為基礎的系統上原生執行時,在 WOW64 下建立盡可能多的線程,因為 WOW64 會為每個線程配置額外的 64 位堆棧(通常是 512 KB)。 此外,某些地址空間會保留給 WOW64 本身,以及它使用的數據結構。 保留的數量取決於處理器;比 x64 或 ARM64 處理器更多的保留於 Intel Itanium 上。
如果應用程式在映像標頭中設定了 IMAGE_FILE_LARGE_ADDRESS_AWARE 旗標,則每個32位應用程式都會在W64環境中接收4 GB的虛擬位址空間。 如果未設定 IMAGE_FILE_LARGE_ADDRESS_AWARE 旗標,則每個 32 位應用程式都會在 WOW64 環境中接收 2 GB 的虛擬地址空間。