una - ¿Puedo evitar JIT en.net?
just in time pdf (3)
Di si mi código siempre se ejecutará en un procesador en particular y si tengo esta información durante la instalación, ¿hay alguna posibilidad de que pueda evitar JIT?
NGEN es la respuesta obvia, pero me gustaría señalar que el código JIT-ed puede ser más rápido ya que "sabe" sobre cosas en tiempo de ejecución que NGEN no puede. Usamos ese hecho para literalmente dejar caer líneas de código en el suelo en tiempo de ejecución en función de una configuración en nuestros archivos .config:
static readonly bool _EnableLogging = LoadFromConfigFile("EnableLogging");
if (_EnableLogging && log.IsDebugEnabled)
{
//Do some logging
}
En este ejemplo, NGEN debe dejar la instrucción if en el código porque no tiene idea de cuál es el valor del campo _EnableLogging. Sin embargo, JIT conoce el valor de esta ejecución y si es falsa, entonces no hay forma de que la sentencia if se procesará, y el JIT omitirá literalmente toda la instrucción if del código máquina que genera, lo que dará como resultado una base de código más pequeña y, por lo tanto, una base de código más rápida.
No tiene que evitar JIT si tiene información de CPU en la instalación.
Si compila sus módulos usando el modificador / platform: [x86 / x64 / IA64], el compilador incluirá esta información en el archivo PE resultante para que el CLR JETILICE el código en el código nativo de CPU apropiado y optimice el código para ese Arquitectura de la CPU
Puede usar NGEN , sí, pero solo si desea mejorar el inicio de la aplicación como resultado del conjunto de trabajo reducido en los procesos que se ejecutan, no porque hubiera evitado JITting. Y necesita comparar realmente el rendimiento de los archivos NGEN con los de los archivos NGEN''d ''para asegurarse de que el NGEN''d sea más rápido.
NGEN no puede hacer tantas suposiciones sobre el entorno de ejecución como el compilador JIT y, por lo tanto, generará código no optimizado.
Por ejemplo: agrega indirecciones para el acceso de campo estático porque la dirección real de los campos estáticos solo se conoce en tiempo de ejecución.
Use NGEN :
Native Image Generator (Ngen.exe) es una herramienta que mejora el rendimiento de las aplicaciones administradas. Ngen.exe crea imágenes nativas, que son archivos que contienen código máquina compilado específico del procesador, y las instala en la caché de imágenes nativas en la computadora local. El tiempo de ejecución puede usar imágenes nativas de la memoria caché en su lugar utilizando el compilador just-in-time (JIT) para compilar el ensamblado original ...
Para obtener información adicional sobre el uso de Ngen.exe y el servicio de imágenes nativas, consulte Servicio de imágenes nativas ...