Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3162|Resposta: 1

[Comunicação] Introdução e diferença entre compilação JIT e AOT em .NET

[Copiar link]
Publicado em 15/02/2024 17:17:46 | | | |
Terminologia

CLI: Common Language Infrastructure é uma especificação sob o framework .NET que define um runtime independente da linguagem e cross-architecture. Portanto, podemos desenvolver softwares em várias linguagens de alto nível sob a especificação que podem rodar em diferentes arquiteturas de computador sem modificação

CLR: Runtime de Linguagem Comum. é uma especificação que garante que o ambiente operacional seja independente da linguagem e entre arquiteturas

CTS: Sistema de Tipos Comum

CLS: Especificação de Linguagem Comum

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

IL: Immediate Language Intermediate Language, Advanced Language Compiler compila o código-fonte de linguagens avançadas em linguagens intermediárias.

JIT: Just In Time Compiler compila uma linguagem intermediária em código de máquina que um computador pode entender, que pode ser executado

O código-fonte é compilado em IL pelo compilador C# (ou seja, programas, DLLs, exes, etc.). O CLR carrega esses ILs, compila-os em código de máquina via JIT e, finalmente, é executado, como mostrado na figura a seguir:



O JIT (compilador just-in-time) é compilado em tempo real

O compilador just-in-time (JIT) faz parte do Common Language Runtime (CLR) em .NET e é responsável por gerenciar o . .NET, independentemente de qualquer programa . linguagem de programação .NET. Compiladores específicos de linguagem convertem código-fonte para linguagens intermediárias. Essa linguagem intermediária é então convertida em código de máquina por um compilador just-in-time (JIT). Esse código de máquina é específico para o ambiente de computador em que o compilador JIT roda.  Trabalho com compiladores JIT: Compiladores JIT precisam acelerar a execução de código e fornecer suporte para múltiplas plataformas. Veja como funciona:



O compilador JIT converte a Microsoft Intermediate Language (MSIL) ou Common Intermediate Language (CIL) em código de máquina. Isso é feito antes de realizar MSIL ou CIL. O MSIL é convertido para código de máquina conforme necessário, ou seja, o compilador JIT compila o MSIL ou CIL conforme necessário, em vez de compilar todo o código. Armazene o MSIL ou CIL compilado para que possa ser usado em chamadas subsequentes, se necessário.

Prós do JIT:

  • Ele pode ser compilado e gerado em tempo real de acordo com a situação atual do hardware
  • A sequência ótima de instruções da máquina pode ser gerada de acordo com a operação atual do programa
  • Quando um programa precisa suportar ligação dinâmica, ele só pode usar o método de compilação JIT
  • O código pode ser ajustado de acordo com a situação real da memória no processo para fazer melhor uso da memória


Contras do JIT:

  • Compilar requer os recursos do runtime em tempo de execução, o que faz o processo engasgar durante a execução
  • Compilação consome tempo de execução, e algumas otimizações de compilação de código não podem ser totalmente suportadas, então é necessário equilibrar fluência e tempo
  • A preparação da compilação e a identificação dos métodos frequentemente usados são demoradas, e a compilação inicial não alcança o maior desempenho


AOT (compilador antecipado ao tempo) é compilado antecipadamente

Em ciência da computação, compilação precoce (compilação AOT) é o ato de compilar uma linguagem de programação (geralmente) de alto nível em uma linguagem (geralmente) de baixo nível antes de executar um programa, geralmente em tempo de compilação, para reduzir a quantidade de esforço que precisa ser realizada em tempo de execução.

Na maioria das vezes, não é o mesmo que combinar linguagens de programação de alto nível (como C ou C++) ou representações intermediárias como bytecode Java ou . NET Framework Common Intermediate Language (CIL) compilado para ser nativo (dependente do sistema) relacionado ao comportamento. código de máquina para que os binários resultantes possam ser executados nativamente, assim como um compilador nativo padrão. Quando usado nesse ambiente específico, frequentemente é visto como o oposto da compilação just-in-time (JIT).

A compilação AOT ocorre antes do programa ser compilado ou instalado, ou seja, ela pré-compila scripts ou bytecodes em código de máquina e os executa diretamente quando necessário. Isso pode melhorar a velocidade de inicialização do programa e evitar atrasos causados pelo processo de compilação.

Prós do AOT:

  • Compilar antes da execução do programa evita desempenho na compilação e o consumo de memória em tempo de execução
  • O desempenho máximo pode ser alcançado no início do programa
  • Isso pode acelerar significativamente a eficiência da execução do programa


Contras do AOT:

  • Compilar antes da rodada aumenta o tempo necessário para instalá-lo
  • Salvar conteúdo pré-compilado consome mais memória
  • Sacrificando a consistência das linguagens de alto nível


resumo

JIT: Alta taxa de desempenho, bônus de desempenho em tempo de execução, pode rodar mais rápido e gerar código dinamicamente, etc., mas é relativamente lento para iniciar e requer um certo tempo e frequência de chamadas para acionar o mecanismo de camadas do JIT
AOT: Baixo uso de memória, velocidade de inicialização rápida, pode vincular diretamente o tempo de execução estaticamente ao programa final sem necessidade de execução, mas não há bônus de desempenho em tempo de execução, e não pode ser otimizado de acordo com a execução do programa



Referência:

O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.





Anterior:.NET/C# Alto desempenho funde múltiplos arquivos em um único arquivo
Próximo:.NET/C# coleção Lista, HashSet para determinar se um elemento possui um benchmark
 Senhorio| Publicado em 10/03/2024 10:58:59 |
.NET/C# Plataforma compiladora Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com