1. 程式人生 > >Windows桌面應用程式(1-3-3-1st) WOW64下的效能和記憶體消耗

Windows桌面應用程式(1-3-3-1st) 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本身及其使用的資料結構保留了一定量的地址空間。保留金額取決於處理器; Intel Itanium上保留的內容多於x64或ARM64處理器。

如果應用程式在映像頭中設定了IMAGE_FILE_LARGE_ADDRESS_AWARE標誌,則每個32位應用程式在WOW64環境中都會收到4 GB的虛擬地址空間。如果未設定IMAGE_FILE_LARGE_ADDRESS_AWARE

標誌,則每個32位應用程式在WOW64環境中接收2 GB的虛擬地址空間。