Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
En este artículo se detallan las opciones que puede usar para configurar la compilación de .NET.
Compilación en niveles
- Configura si el compilador Just-In-Time (JIT) usa la compilación en capas. La compilación en capas realiza transiciones de métodos a través de dos niveles:
- El primer nivel genera código más rápidamente (JIT rápido) o carga código precompilado (ReadyToRun).
- El segundo nivel genera código optimizado en segundo plano ("optimizando JIT").
- En .NET Core 3.0 y versiones posteriores, la compilación en capas está habilitada de forma predeterminada.
- En .NET Core 2.1 y 2.2, la compilación en capas está deshabilitada de forma predeterminada.
- Para obtener más información, consulte la guía de compilación en capas.
| Nombre del valor de configuración | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true: habilitado.false: deshabilitado. |
| Propiedad de MSBuild | TieredCompilation |
true: habilitado.false: deshabilitado. |
| Variable del entorno | DOTNET_TieredCompilation |
1: habilitado.0: deshabilitado. |
Examples
Archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
archivo runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Archivo del proyecto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
JIT rápido
- Configura si el compilador JIT usa JIT rápido. Para los métodos que no contienen bucles y para los que el código precompilado no está disponible, JIT rápido los compila más rápidamente, pero sin optimizaciones.
- La habilitación rápida de JIT reduce el tiempo de inicio, pero puede generar código con características de rendimiento degradadas. Por ejemplo, el código puede usar más espacio de pila, asignar más memoria y ejecutarse más lentamente.
- Si jiT rápido está deshabilitado, pero la compilación en capas está habilitada, solo el código precompilado participa en la compilación en capas. Si un método no está compilado previamente con ReadyToRun, el comportamiento JIT es el mismo que si la compilación en capas estuviera deshabilitada .
- En .NET Core 3.0 y versiones posteriores, JIT rápido está habilitado de forma predeterminada.
- En .NET Core 2.1 y 2.2, JIT rápido está deshabilitado de forma predeterminada.
| Nombre del valor de configuración | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true: habilitado.false: deshabilitado. |
| Propiedad de MSBuild | TieredCompilationQuickJit |
true: habilitado.false: deshabilitado. |
| Variable del entorno | DOTNET_TC_QuickJit |
1: habilitado.0: deshabilitado. |
Examples
Archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
archivo runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Archivo del proyecto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Bucles JIT rápidos para bucles
- Configura si el compilador JIT usa JIT rápido en métodos que contienen bucles.
- La habilitación de bucles JIT rápidos puede mejorar el rendimiento del inicio. Sin embargo, los bucles de ejecución prolongada se pueden bloquear en código menos optimizado durante largos períodos.
- Si jiT rápido está deshabilitado, esta configuración no tiene ningún efecto.
- Si omite esta configuración, jiT rápido no se usa para los métodos que contienen bucles. Esto es equivalente a establecer el valor en
false.
| Nombre del valor de configuración | Valores | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false: deshabilitado.true: habilitado. |
| Propiedad de MSBuild | TieredCompilationQuickJitForLoops |
false: deshabilitado.true: habilitado. |
| Variable del entorno | DOTNET_TC_QuickJitForLoops |
0: deshabilitado.1: habilitado. |
Examples
Archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
archivo runtimeconfig.template.json:
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Archivo del proyecto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Configura si el entorno de ejecución de .NET usa código precompilado para imágenes con datos ReadyToRun disponibles. Al deshabilitar esta opción, se fuerza el tiempo de ejecución al código del marco de compilación JIT.
- Para obtener más información, consulte Ready to Run.
- Si omite esta configuración, .NET usa los datos ReadyToRun cuando esté disponible. Esto es equivalente a establecer el valor en
1.
| Nombre del valor de configuración | Valores | |
|---|---|---|
| Variable del entorno | DOTNET_ReadyToRun |
1: habilitado.0: deshabilitado. |
Optimización guiada por perfiles
Esta configuración habilita la optimización guiada por perfiles (PGO) dinámica (en capas) en .NET 6 y versiones posteriores.
| Nombre del valor de configuración | Valores | |
|---|---|---|
| Variable del entorno | DOTNET_TieredPGO |
1: habilitado.0: deshabilitado. |
| Propiedad de MSBuild | TieredPGO |
true: habilitado.false: deshabilitado. |
La optimización guiada por perfiles (PGO) es donde el compilador JIT genera código optimizado en términos de los tipos y rutas de acceso de código que se usan con más frecuencia. Dinámico PGO funciona manualmente con la compilación en capas para optimizar aún más el código en función de la instrumentación adicional que se ha implementado durante el nivel 0.
Examples
Archivo del proyecto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>