Consumo de memoria y rendimiento 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 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 cualquier procesador ARM64, más software está implicado en la emulación y el rendimiento sufre como resultado.
- Sobrecarga de la API thunk. Esta sobrecarga es pequeña en comparación con las llamadas del sistema al kernel NT. Las funciones del 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, que complican la emulación de las páginas nativas de 4 KB en la arquitectura x86 (más páginas están marcadas 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.
- Conjunto de trabajo. WOW64 aumenta el tamaño del conjunto 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 al ejecutarse de forma nativa en sistemas basados en x86 porque WOW64 asigna una pila adicional de 64 bits (normalmente 512 KB) para cada subproceso. Además, se reserva cierta cantidad de espacio de direcciones para WOW64 y las estructuras de datos que usa. La cantidad reservada depende del procesador; se reserva más 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.