Disponibilité de .NET Core 3 Preview 4, avec une compilation JIT hiérarchisée améliorée

Par:
fredericmazue

mer, 24/04/2019 - 18:01

Microsoft a annoncé la disponibilité de .NET Core 3.0 Preview 4. Une mouture riche en nouveautés, parmi lesquelles un nouveau contrôle de graphiques pour Windows Forms, la prise en charge de HTTP/2, les évolutions de ramasse-miettes permettant d'utiliser moins de mémoire, la prise en charge des limites de processeur avec Docker, l'ajout de PowerShell dans le kit de développement .NET Core SDK Docker.

A remarquer tout particulièrement, en ce qui concerne les performances à l'exécution, la compilation JIT à plusieurs niveaux : TC, pour Tiered Compilation. Dans cette préversion 4 Microsoft travaille à peaufiner TC et fournit une nouvelle configuration par défaut.

TC est une fonctionnalité qui est capable, lors de l'exécution, de contrôler la compilation JIT et la qualité du code produit afin d'obtenir différents résultats en terme de performance.

Avec l'approche classique, non TC, chaque méthode est compilée d'une seule manière. Avec l'approche TC, une méthode sera, selon le contexte, compilée rapidement pour produire un code plus lent à l'exécution, ou compilée lentement, pour produire un code plus rapide à l'exécution.

Microsoft travaille toujours pour résoudre la question de la meilleure configuration de TC dans la version .NET Core 3.0 finale. Pour cela Microsoft indique avoir étudié l’impact (positif et / ou négatif) sur les performances de nombreux scénarios d’application, avec pour objectif de sélectionner un paramètre par défaut qui convient à tous les scénarios et de fournir des commutateurs de configuration permettant aux développeurs d’optimiser leurs applications dans d’autres configurations.

TC est activé dans .NET Core 3 Preview 4, mais avec une nouvelle configuration par défaut. Microsoft recherche des commentaires et des données supplémentaires pour décider si cette nouvelle configuration est la meilleure ou s'il est préférable d'apporter d'autres modifications, pour .NET Core 3.0 finale.