Compilação “ahead-of-time” (ReadyToRun) no .NET Core 3

Elemar Júnior

Em um post anterior, falamos dos potenciais ganhos de performance resultantes da opção de compilação em camadas, fornecida pelo JIT. Na prática, o JIT compila um mesmo código, múltiplas vezes, gerando, em cada nova compilação, um código ainda melhor que o anterior.

Além dessa nova opção, há também a alternativa de pedirmos que o compilador gere código nativo, junto com a compilação para a Intermediate Language (naquele mesmo processo que executamos no Visual Studio, por exemplo, e não durante a execução da aplicação). Essa opção ficou conhecida como ReadyToRun.

A compilação ReadyToRun pode ser ativada diretamente no arquivo de configuração.

<PropertyGroup>
  <PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>

O arquivo executável gerado ficará signficativamente maior. A razão para isso é que, por motivos de compatibilidade, tanto o código nativo quanto o IL vão estar no arquivo. Ou seja, além do tamanho do executável gerado pelo processo tradicional (somente com Intermediate Language), serão acrescidos os bytes relativos ao código nativo. Entretanto, o tempo para inicialização será muito menor.

Outro ponto importante de atenção é que, por razões óbvias, sua aplicação precisará ser self-contained e será necessário especificar o runtime onde a aplicação irá funcionar.

dotnet publish -c Release -r win-x64 --self-contained

Honestamente, exceto por cenários muito específicos, os ganhos de performance obtidos com essa opção são difíceis de justificar. Há aspectos mais importantes a considerar antes de recorrer a mudanças no processo de compilação.

Em resumo

A novidade
A partir do .NET Core 3, temos a opção de gerar código nativo junto com o IL, durante o primeiro processo de compilação. Isso pode reduzir o tempo de inicialização das aplicações.
Pontos positivos
O tempo de inicialização da aplicação pode cair consideravelmente. Isso pode ser extremamente interessante em cenários bem específicos.
Pontos negativos
Os arquivos binários gerados pela compilação são signficativamente maiores por acomodar, além do código nativo, o código IL. Além disso, essa compilação é, obrigatoriamente, por razões óbvias, self-contained e com target fixo determinado.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Engenharia de Software

Três vantagens reais de utilizar orquestradores BPM para serviços

Arquiteto de software e solução com larga experiência corporativa
Desenvolvimento de Software

Os principais desafios ao adotar testes

Especialista em Testes e Arquitetura de Software
Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Compilação “ahead-of-time” (ReadyToRun) no .NET Core 3

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?