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.
|