Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo detalha as definições que pode usar para configurar a compilação .NET.
Compilação hierárquica
- Configura se o compilador just-in-time (JIT) utiliza compilação em níveis. A compilação em níveis transita métodos por dois níveis:
- O primeiro nível gera código mais rapidamente (quick JIT) ou carrega código pré-compilado (ReadyToRun).
- O segundo nível gera código otimizado em segundo plano ("otimização do JIT").
- No .NET Core 3.0 e posteriores, a compilação em níveis está ativada por defeito.
- No .NET Core 2.1 e 2.2, a compilação em níveis está desativada por defeito.
- Para mais informações, consulte o guia de compilação em níveis.
| Nome da configuração | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true - ativadofalse - deficientes |
| Propriedade MSBuild | TieredCompilation |
true - ativadofalse - deficientes |
| Variável de ambiente | DOTNET_TieredCompilation |
1 - ativado0 - deficientes |
Examples
runtimeconfig.json ficheiro:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
runtimeconfig.template.json arquivo:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Ficheiro do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
Rápido JIT
- Configura se o compilador JIT utiliza quick JIT. Para métodos que não contêm ciclos e para os quais não está disponível código pré-compilado, o JIT rápido compila-os mais rapidamente, mas sem otimizações.
- Ativar o quick JIT reduz o tempo de arranque, mas pode produzir código com características de desempenho degradadas. Por exemplo, o código pode usar mais espaço na pilha, alocar mais memória e correr mais devagar.
- Se o quick JIT estiver desativado mas a compilação em níveis estiver ativada, apenas o código pré-compilado participa na compilação em níveis. Se um método não estiver pré-compilado com o ReadyToRun, o comportamento do JIT é o mesmo que se a compilação em camadas estivesse desativada.
- No .NET Core 3.0 e posteriores, o quick JIT está ativado por defeito.
- No .NET Core 2.1 e 2.2, o quick JIT está desativado por defeito.
| Nome da configuração | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true - ativadofalse - deficientes |
| Propriedade MSBuild | TieredCompilationQuickJit |
true - ativadofalse - deficientes |
| Variável de ambiente | DOTNET_TC_QuickJit |
1 - ativado0 - deficientes |
Examples
runtimeconfig.json ficheiro:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
runtimeconfig.template.json arquivo:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Ficheiro do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
JIT rápido para loops
- Configura se o compilador JIT usa quick JIT em métodos que contêm loops.
- Ativar o JIT rápido para loops pode melhorar o desempenho de arranque. No entanto, ciclos de longa duração podem ficar presos em código menos otimizado durante longos períodos.
- Se o quick JIT estiver desativado, esta definição não tem efeito.
- Se omitir esta definição, o quick JIT não é usado para métodos que contenham loops. Isso equivale a definir o valor como
false.
| Nome da configuração | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false - deficientestrue - ativado |
| Propriedade MSBuild | TieredCompilationQuickJitForLoops |
false - deficientestrue - ativado |
| Variável de ambiente | DOTNET_TC_QuickJitForLoops |
0 - deficientes1 - ativado |
Examples
runtimeconfig.json ficheiro:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
runtimeconfig.template.json arquivo:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Ficheiro do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Configura se o runtime .NET utiliza código pré-compilado para imagens com dados ReadyToRun disponíveis. Desativar esta opção força o runtime a compilar código da framework JIT-compila.
- Para obter mais informações, consulte Pronto para executar.
- Se omitires esta definição, o .NET usa dados ReadyToRun quando estão disponíveis. Isso equivale a definir o valor como
1.
| Nome da configuração | Valores | |
|---|---|---|
| Variável de ambiente | DOTNET_ReadyToRun |
1 - ativado0 - deficientes |
Otimização guiada por perfil
Esta configuração permite otimização dinâmica (em níveis) guiada por perfis (PGO) no .NET 6 e versões posteriores.
| Nome da configuração | Valores | |
|---|---|---|
| Variável de ambiente | DOTNET_TieredPGO |
1 - ativado0 - deficientes |
| Propriedade MSBuild | TieredPGO |
true - ativadofalse - deficientes |
A otimização guiada por perfil (PGO) é onde o compilador JIT gera código otimizado em termos dos tipos e caminhos de código usados com mais frequência. Dinâmica O PGO trabalha em conjunto com a compilação em níveis para otimizar ainda mais o código com base na instrumentação adicional implementada durante o tier 0.
Examples
Ficheiro do projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>