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 位應用程式可能無法在 WOW64 下建立許多執行緒,因為它們在 x86 型系統上以原生方式執行時,因為 WOW64 會為每個執行緒配置額外的 64 位堆疊 (通常是 512 KB) 。 此外,某些位址空間會保留給 WOW64 本身及其使用的資料結構。 保留的數量取決於處理器;比在 x64 或 ARM64 處理器上的 Intel Itanium 上保留更多。
如果應用程式已在映射標頭中設定 IMAGE_FILE_LARGE_ADDRESS_AWARE 旗標,則每個 32 位應用程式都會在 WOW64 環境中收到 4 GB 的虛擬位址空間。 如果未設定 IMAGE_FILE_LARGE_ADDRESS_AWARE 旗標,則每個 32 位應用程式都會在 WOW64 環境中收到 2 GB 的虛擬位址空間。