ArticleApplications & Développement
.Net Core 2.0 optimise l'exécution du code Linux natif
La prochaine version du runtime multi-plate-forme open source de Microsoft permettra de faire tourner plus rapidement le code natif des apps Linux x64 et Windows x86.

.Net Core 2.0, la future version de la plate-forme logicielle open source .Net de Microsoft va ajouter l’optimisation dirigée par les profils (PGO) à Linux x64. La « profile-guided optimization » ou PGO est une technique de compilation native utilisée par le compilateur C++ pour générer un code d’exécution rapide. Comme l’expliquent dans un blog Bertrand Le Roy et Daniel Podder de Microsoft, l’optimisation PGO se fait en deux temps : Une étape de training qui enregistre les informations sur l'exécution du code et une étape de construction qui utilise les résultats du training pour générer un code optimisé. La mise à jour .Net Core 2.0 ajoutera les optimisations PGO à .Net Core sur les plates-formes Windows x86 et Linux x64. Depuis la version .Net Core 1.1, l’optimisation PGO est appliquée à la plateforme Windows x64 et elle est utilisée depuis des années par le framework .Net basé sur Windows.
« Du fait d’une plus grande fragmentation de l'écosystème Linux et de la multiplication des outils de compilation utilisés pour les différentes distributions, l’optimisation dirigée par les profils est plus difficile à réaliser sur Linux que sur Windows », font remarquer Bertrand Le Roy et Daniel Podder. « Pour simplifier le travail sous Linux, nous développons désormais une version .Net unique pour Linux, que nous emballons ensuite dans des installateurs natifs et dans des archives tarballs uniques », ont-ils écrit. « Grâce à cela, nous pouvons appliquer les optimisations PGO à toutes les distributions qui peuvent utiliser plus simplement ces bits communs ». À noter que Mozilla a également activé l'utilisation PGO dans son propre système de construction pour le navigateur Firefox.
Des optimisations de la pile Core à venir
.Net Core 2.0 est actuellement en preview. La PGO ne s'applique qu’aux composants internes du runtime, compilés en natif, et de la compilation JIT, de sorte que les utilisateurs de .Net Core n'ont rien à faire pour tirer profit de ces avantages. Toutes les applications gérées bénéficient automatiquement de l’optimisation dirigée par les profils. L’impact est différent en fonction de l'application. « Pour cette version, nous avons appliqué les optimisations PGO aux éléments natifs du runtime. L’optimisation ne concerne que les données provenant des applications .NET classiques », ont encore expliqué Bertrand Le Roy et Daniel Podder. « Mais, dans une future version, nous prévoyons d'appliquer des optimisations similaires aux composants gérés de la pile .Net Core », ont-ils ajouté.


