O C# 4.0, presente no Visual Studio 2010, introduz um recurso para processamento paralelo, aproveitando de fato o poder dos novos processadores com 2 ou mais núcleos. Esse recurso é chamado de Task Parallel Library (TPL), disponível no namespace System.Threading.Tasks. Vejamos a seguir um exemplo muito simples, adaptado de um vídeo apresentado por Danny Shih.
using System; using System.Diagnostics; using System.Threading.Tasks; namespace VS2010.Console { class Program { static void Main(string[] args) { Stopwatch stopWatch; for (; ; ) { // Contabilizando o tempo do FOR stopWatch = Stopwatch.StartNew(); for (int c = 0; c < 10000; c++) { OperacaoGrande(10000); } System.Console.WriteLine("Tempo com FOR.........: " + stopWatch.ElapsedMilliseconds); // Contabilizando o tempo do PARALLEL FOR stopWatch = Stopwatch.StartNew(); Parallel.For(0, 10000, hum => { OperacaoGrande(10000); }); System.Console.WriteLine("Tempo com PARALLEL FOR: " + stopWatch.ElapsedMilliseconds); System.Console.ReadLine(); } } static void OperacaoGrande(int n) { int tmp = 1; for (int i = 0; i < n; i++) tmp += tmp * i; } } }
Executando o código acima numa aplicação do tipo console, iremos obter o seguinte resultado:
Podemos observar que o segundo FOR (linhas 25 a 29) executou a mesma operação 41% a 50% mais rápido que da forma tradicional. Claro, esse resultado dependerá do processador da máquina que estiver rodando o código. Pretendo explorar com mais profundidade esse assunto em posts futuros.
Comentários recentes