Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 3162|Respuesta: 1

[Comunicación] Introducción y diferencia entre la compilación de JIT y AOT en .NET

[Copiar enlace]
Publicado en 15/2/2024 17:17:46 | | | |
Terminología

CLI: Common Language Infrastructure es una especificación bajo el framework .NET que define un entorno de ejecución independiente del lenguaje y multiarquitectura. Por lo tanto, podemos desarrollar software en varios lenguajes de alto nivel bajo la especificación que pueda ejecutarse en diferentes arquitecturas de ordenadores sin modificaciones

CLR: Tiempo de ejecución en lenguaje común. es una especificación que garantiza que el entorno operativo sea independiente del lenguaje y entre arquitectónicos

CTS: Sistema de tipos comunes

CLS: Especificación de Lenguaje Común

FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class  Library 和成品类库

IL: Lenguaje Inmediato Lenguaje Intermedio, Compilador de Lenguajes Avanzados compila el código fuente de lenguajes avanzados en lenguajes intermedios.

JIT: Just In Time Compiler compila un lenguaje intermedio en código máquina que un ordenador puede entender, y que luego puede ejecutarse

El código fuente se compila en IL mediante el compilador de C# (es decir, programas, dlls, exes, etc.). El CLR carga estos ILs, los compila en código máquina mediante JIT y finalmente se ejecuta, como se muestra en la siguiente figura:



JIT (compilador justo a tiempo) se compila al vuelo

El compilador just-in-time (JIT) forma parte del Common Language Runtime (CLR) en .NET y es responsable de gestionar el archivo . .NET, independientemente de cualquier programa . Lenguaje de programación .NET. Los compiladores específicos de cada lenguaje convierten el código fuente a lenguajes intermedios. Este lenguaje intermedio se convierte entonces en código máquina mediante un compilador just-in-time (JIT). Este código máquina es específico del entorno informático en el que se ejecuta el compilador JIT.  Trabajo de compilador JIT: Los compiladores JIT necesitan acelerar la ejecución de código y proporcionar soporte para múltiples plataformas. Así es como funciona:



El compilador JIT convierte Microsoft Intermediate Language (MSIL) o Common Intermediate Language (CIL) en código máquina. Esto se hace antes de realizar MSIL o CIL. MSIL se convierte a código máquina según sea necesario, es decir, el compilador JIT compila MSIL o CIL según sea necesario, en lugar de compilar todo el código. Almacena el MSIL o CIL compilado para que pueda usarse en llamadas posteriores si es necesario.

Ventajas de JIT:

  • Puede compilarse y generarse en tiempo real según la situación actual del hardware
  • La secuencia óptima de instrucciones de la máquina puede generarse según la operación actual del programa
  • Cuando un programa necesita soportar enlace dinámico, solo puede usar el método de compilación JIT
  • El código puede ajustarse según la situación real de la memoria en el proceso para hacer un mejor uso de la memoria


Contras de JIT:

  • La compilación requiere los recursos del tiempo de ejecución, lo que provoca que el proceso se entretenga al ejecutarse
  • La compilación consume tiempo de ejecución, y algunas optimizaciones de compilación de código no pueden ser totalmente soportadas, por lo que es necesario equilibrar fluidez y tiempo
  • La preparación de la compilación y la identificación de los métodos usados con frecuencia consumen mucho tiempo, y la compilación inicial no logra el mayor rendimiento


AOT (compilador por adelantado) se compila de antemano

En informática, la compilación temprana (compilación AOT) es el acto de compilar un lenguaje de programación (normalmente) de alto nivel en uno (normalmente) de bajo nivel antes de ejecutar un programa, generalmente en tiempo de compilación, para reducir la cantidad de esfuerzo que debe realizarse en tiempo de ejecución.

La mayoría de las veces, no es lo mismo que combinar lenguajes de programación de alto nivel (como C o C++) o representaciones intermedias como el bytecode de Java o . NET Framework Common Intermediate Language (CIL) compilado para ser nativo (dependiente del sistema) relacionado con el comportamiento. código máquina para que los binarios resultantes puedan ejecutarse de forma nativa, igual que un compilador nativo estándar. Cuando se utiliza en este entorno específico, a menudo se considera la antítesis de la compilación justo a tiempo (JIT).

La compilación AOT ocurre antes de que el programa esté compilado o instalado, es decir, precompila scripts o bytecodes en código máquina y los ejecuta directamente cuando es necesario. Esto puede mejorar la velocidad de inicio del programa y evitar retrasos causados por el proceso de compilación.

Ventajas de la AOT:

  • Compilar antes de que el programa se ejecute evita el rendimiento de compilación y el consumo de memoria en tiempo de ejecución
  • El rendimiento máximo puede alcanzarse al principio del programa
  • Puede acelerar significativamente la eficiencia de la ejecución del programa


Contras de AOT:

  • Compilar antes de que el programa se ejecute aumenta el tiempo que tarda en instalarlo
  • Guardar contenido precompilado ocupa más memoria
  • Sacrificar la coherencia de los lenguajes de alto nivel


resumen

JIT: Alto rendimiento, bonificación en rendimiento en tiempo de ejecución, puede funcionar más rápido y generar código dinámicamente, etc., pero es relativamente lento para arrancar y requiere cierto tiempo y frecuencia de llamadas para activar el mecanismo de capas JIT
AOT: Bajo uso de memoria, velocidad de arranque rápida, puede enlazar directamente el tiempo de ejecución estáticamente con el programa final sin necesidad de ejecución, pero no hay bonificación en rendimiento en tiempo de ejecución y no puede optimizarse más según la ejecución del programa



Referencia:

El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.





Anterior:.NET/C# Alto rendimiento fusiona varios archivos en un solo archivo
Próximo:.NET/C# colección Lista, HashSet para determinar si un elemento tiene un benchmark
 Propietario| Publicado en 10/3/2024 10:58:59 |
.NET/C# Plataforma compiladora Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com