Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article détaille les paramètres que vous pouvez utiliser pour configurer la compilation .NET.
Compilation hiérarchisée
- Configure si le compilateur juste-à-temps (JIT) utilise la compilation hiérarchisé. La compilation hiérarchisée passe par deux niveaux :
- Le premier niveau génère du code plus rapidement (JIT rapide) ou charge du code précompilé (ReadyToRun).
- Le deuxième niveau génère du code optimisé en arrière-plan (« optimisation du JIT »).
- Dans .NET Core 3.0 et versions ultérieures, la compilation hiérarchisé est activée par défaut.
- Dans .NET Core 2.1 et 2.2, la compilation hiérarchisé est désactivée par défaut.
- Pour plus d’informations, consultez le guide de compilation hiérarchisé.
| Nom du paramètre | Valeurs | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation |
true – activéfalse - désactivé |
| Propriété MSBuild | TieredCompilation |
true – activéfalse - désactivé |
| Variable d'environnement | DOTNET_TieredCompilation |
1 – activé0 - désactivé |
Examples
Fichier runtimeconfig.json :
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
}
Fichier runtimeconfig.template.json :
{
"configProperties": {
"System.Runtime.TieredCompilation": false
}
}
Fichier projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
</Project>
JIT rapide
- Configure si le compilateur JIT utilise un JIT rapide. Pour les méthodes qui ne contiennent pas de boucles et pour lesquelles le code précompilé n’est pas disponible, le JIT rapide les compile plus rapidement, mais sans optimisations.
- L’activation du JIT rapide diminue le temps de démarrage, mais peut produire du code avec des caractéristiques de performances dégradées. Par exemple, le code peut utiliser plus d’espace de pile, allouer plus de mémoire et s’exécuter plus lentement.
- Si le JIT rapide est désactivé mais que la compilation hiérarchisé est activée, seul le code précompilé participe à la compilation hiérarchisé. Si une méthode n’est pas précompilée avec ReadyToRun, le comportement JIT est le même que si la compilation hiérarchisé a été désactivée.
- Dans .NET Core 3.0 et versions ultérieures, le JIT rapide est activé par défaut.
- Dans .NET Core 2.1 et 2.2, le JIT rapide est désactivé par défaut.
| Nom du paramètre | Valeurs | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJit |
true – activéfalse - désactivé |
| Propriété MSBuild | TieredCompilationQuickJit |
true – activéfalse - désactivé |
| Variable d'environnement | DOTNET_TC_QuickJit |
1 – activé0 - désactivé |
Examples
Fichier runtimeconfig.json :
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
}
Fichier runtimeconfig.template.json :
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJit": false
}
}
Fichier projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
</Project>
Boucles JIT rapides
- Configure si le compilateur JIT utilise un JIT rapide sur les méthodes qui contiennent des boucles.
- L’activation du JIT rapide pour les boucles peut améliorer les performances de démarrage. Toutefois, les boucles longues peuvent être bloquées dans du code moins optimisé pendant de longues périodes.
- Si le JIT rapide est désactivé, ce paramètre n’a aucun effet.
- Si vous omettez ce paramètre, le JIT rapide n’est pas utilisé pour les méthodes qui contiennent des boucles. Ceci équivaut à définir la valeur sur
false.
| Nom du paramètre | Valeurs | |
|---|---|---|
| runtimeconfig.json | System.Runtime.TieredCompilation.QuickJitForLoops |
false - désactivétrue – activé |
| Propriété MSBuild | TieredCompilationQuickJitForLoops |
false - désactivétrue – activé |
| Variable d'environnement | DOTNET_TC_QuickJitForLoops |
0 - désactivé1 – activé |
Examples
Fichier runtimeconfig.json :
{
"runtimeOptions": {
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
}
Fichier runtimeconfig.template.json :
{
"configProperties": {
"System.Runtime.TieredCompilation.QuickJitForLoops": false
}
}
Fichier projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
</Project>
ReadyToRun
- Configure si le runtime .NET utilise du code précompilé pour les images avec les données ReadyToRun disponibles. La désactivation de cette option force le runtime à compiler le code du framework JIT.
- Pour plus d’informations, consultez Prêt à s’exécuter.
- Si vous omettez ce paramètre, .NET utilise les données ReadyToRun lorsqu’elles sont disponibles. Ceci équivaut à définir la valeur sur
1.
| Nom du paramètre | Valeurs | |
|---|---|---|
| Variable d'environnement | DOTNET_ReadyToRun |
1 – activé0 - désactivé |
Optimisation guidée par profil
Ce paramètre active l’optimisation dynamique (hiérarchisé) guidée par profil (PGO) dans .NET 6 et versions ultérieures.
| Nom du paramètre | Valeurs | |
|---|---|---|
| Variable d'environnement | DOTNET_TieredPGO |
1 – activé0 - désactivé |
| Propriété MSBuild | TieredPGO |
true – activéfalse - désactivé |
L’optimisation guidée par profil (PGO) est l’endroit où le compilateur JIT génère du code optimisé en termes de types et de chemins de code les plus fréquemment utilisés. Dynamique PGO fonctionne main dans la main avec la compilation hiérarchisé pour optimiser davantage le code en fonction d’une instrumentation supplémentaire mise en place pendant le niveau 0.
Examples
Fichier projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
</Project>