image 

    Avec le Framework .NET 4.0 et Visual Studio 2010, Microsoft a introduit de nombreuses nouveautés pour supporter le parallélisme. Vous utilisez peut-être les librairies TPL et  PLINQ dans vos propres traitements. Pour supporter ces nouveautés, le Thread Pool 4.0 a été modifié en conséquence (Architecture type « Work Stealing »).  Du côté de Visual Studio 2010, de nouvelles fenêtres pour observer, optimiser vos programmes parallèles ont été ajoutées.

 

Avec la préversion de Visual Studio 11, l’offre parallèle .NET s’est encore étoffée. Cependant, la plus grosse nouveauté se trouve du côté des performances. En effet, les équipes de Redmond ont énormément travaillé pour offrir des performances époustouflantes à vos applications.

 

Exécutons le code ci-dessous avec Visual Studio 2010:

using System;

using System.Diagnostics;

using System.Threading.Tasks;

 

namespace ConsoleApplication15

{

    class Program

    {

        static void Main()

        {

            var sw = new Stopwatch();

 

            while (true)

            {

                GC.Collect();

                GC.WaitForPendingFinalizers();

                GC.Collect();

 

                var tcs = new TaskCompletionSource<object>();

                var t = tcs.Task;

 

                sw.Restart();

 

                for (int i = 0; i < 1000000; i++)

                    t = t.ContinueWith(_ => (object)null);

 

                var elapsed = sw.Elapsed;

                GC.KeepAlive(tcs);

                Console.WriteLine(elapsed);

            }

        }

    }

}

 

En compilant ce code en mode Release sur mon portable quadcœur, j’obtiens les résultats suivants :

image

 

En lançant l’exécutable sur la même machine, mais sur une autre partition Windows 7 avec la préversion Visual Studio 11 installée (donc avec le Framework 4.5). 

image

 

Les résultats sont incroyablement plus performants.

image

 

Naturellement, l’exemple est très simple et ne ressemble sans doute pas à la complexité d’une application professionnelle. Cependant, ce petit exemple révèle d’énormes progrès du côté des performances avec le Framework .NET 4.5, ce qui devrait vous faire plaisir Smile

 

A bientôt

 

Bruno

boucard.bruno@free.fr