Offre Parallèle .NET 4.5 - Part 1
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 :
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).
Les résultats sont incroyablement plus performants.
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
A bientôt
Bruno