Rendimiento y consumo de memoria en WOW64
El rendimiento y el consumo de memoria en WOW64 están determinados por los siguientes factores:
- Hardware del procesador. La emulación de instrucciones se realiza en el chip. En el procesador x64, el procesador ejecuta las instrucciones x86 de forma nativa. Por lo tanto, la velocidad de ejecución bajo WOW64 en x64 es similar a su velocidad en Windows de 32 bits. En el procesador Intel Itanium y en los procesadores ARM64, hay más software implicado en la emulación y el rendimiento sufre como resultado.
- Sobrecarga de thunk de API. Esta sobrecarga es pequeña en comparación con las llamadas del sistema al kernel NT. Las funciones de kernel nt están diseñadas para llamarse con poca frecuencia.
- Tamaño de memoria virtual. En el procesador Intel Itanium, WOW64 agrega una sobrecarga significativa si dos o más instancias de la misma aplicación de 32 bits se ejecutan simultáneamente. Esto se debe a las páginas nativas de 8 KB en Intel Itanium, lo que complica la emulación de las páginas nativas de 4 KB en la arquitectura x86 (más páginas se marcan como grabables; todas las páginas grabables son privadas para el proceso). Esto puede afectar negativamente a la escalabilidad de Terminal Services en determinados procesadores. Este no es el caso del procesador x64.
- Espacio de trabajo. WOW64 aumenta el tamaño del espacio de trabajo de la aplicación.
WOW64 permite que las aplicaciones de 32 bits aprovechen el kernel de 64 bits. Por lo tanto, las aplicaciones de 32 bits pueden usar un mayor número de identificadores de kernel y identificadores de ventana. Sin embargo, es posible que las aplicaciones de 32 bits no puedan crear tantos subprocesos en WOW64 como pueden cuando se ejecutan de forma nativa en sistemas basados en x86 porque WOW64 asigna una pila de 64 bits adicional (normalmente 512 KB) para cada subproceso. Además, cierta cantidad de espacio de direcciones se reserva para WOW64 y las estructuras de datos que usa. La cantidad reservada depende del procesador; más se reserva en el Intel Itanium que en los procesadores x64 o ARM64.
Si la aplicación tiene la marca IMAGE_FILE_LARGE_ADDRESS_AWARE establecida en el encabezado de imagen, cada aplicación de 32 bits recibe 4 GB de espacio de direcciones virtuales en el entorno WOW64. Si no se establece la marca IMAGE_FILE_LARGE_ADDRESS_AWARE , cada aplicación de 32 bits recibe 2 GB de espacio de direcciones virtuales en el entorno WOW64.