Desempenho e consumo de memória em WOW64

O desempenho e o consumo de memória em WOW64 são determinados pelos seguintes fatores:

  • Hardware do processador. A emulação de instrução é executada no chip. No processador x64, as instruções x86 são executadas nativamente pelo processador. Portanto, a velocidade de execução em WOW64 em x64 é semelhante à velocidade sob o Windows de 32 bits. No processador Intel Itanium e em qualquer processador ARM64, mais software está envolvido na emulação e o desempenho sofre como resultado.
  • Sobrecarga de conversão de API. Essa sobrecarga é pequena em comparação com as chamadas do sistema para o kernel NT. As funções de kernel NT devem ser chamadas com pouca frequência.
  • Tamanho da memória virtual. No processador Intel Itanium, o WOW64 adicionará uma sobrecarga significativa se duas ou mais instâncias do mesmo aplicativo de 32 bits estiverem sendo executadas simultaneamente. Isso ocorre devido às páginas nativas de 8 KB no Itanium Intel, o que complica a emulação das páginas nativas de 4 KB na arquitetura x86 (mais páginas são marcadas como graváveis; todas as páginas graváveis são privadas do processo). Isso pode afetar negativamente a escalabilidade dos Serviços de Terminal em determinados processadores. Esse não é o caso do processador x64.
  • Conjunto de trabalho. WOW64 aumenta o tamanho do conjunto de trabalho do aplicativo.

O WOW64 permite que aplicativos de 32 bits aproveitem o kernel de 64 bits. Portanto, aplicativos de 32 bits podem usar um número maior de identificadores de kernel e identificadores de janela. No entanto, os aplicativos de 32 bits podem não ser capazes de criar tantos threads em WOW64 quanto puderem ao serem executados nativamente em sistemas baseados em x86 porque o WOW64 aloca uma pilha adicional de 64 bits (geralmente 512 KB) para cada thread. Além disso, alguma quantidade de espaço de endereço é reservada para o próprio WOW64 e as estruturas de dados que ele usa. O valor reservado depende do processador; mais é reservado no Itanium Intel do que nos processadores x64 ou ARM64.

Se o aplicativo tiver o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE definido no cabeçalho da imagem, cada aplicativo de 32 bits receberá 4 GB de espaço de endereço virtual no ambiente WOW64. Se o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE não estiver definido, cada aplicativo de 32 bits receberá 2 GB de espaço de endereço virtual no ambiente WOW64.