Muchos desarrolladores continúan si utilizar los “pragmas” que aprovechan y explotan el rendimiento de nuestros equipos con procesadores de varios núcleos.
Dejando de pensar en ‘single’ con tan solo un ‘AsParallel’ nuestros bucles pueden lucir mucho mas agiles.
Da un vistazo al siguiente código, te animo a experimentar y perder el miedo a usarlo… et tiempo… si lo cronometras… nos dará la razón.
En este ejemplo podras cronometrar el tiempo empleado en ejecutar tres ‘pings’ en blucle clasico y el siguiente con AsParallel… veras la diferencia!
' Sacar partido a la ejecucion paralela, cuando disponemos de mas de un nucleo ' Sub Main() Console.WriteLine("Number of processors : " + Environment.ProcessorCount.ToString) Dim ips = {"192.168.1.1", "192.168.1.3", "192.168.1.5"} Dim start As DateTime = Now ' test de ejecucion para for each clasico Dim pings = From ip In ips Select New Ping().Send(ip) For Each ping In pings Console.WriteLine("{0} : {1}", ping.Status, ping.Address) Next Console.WriteLine(Now.Subtract(start)) ' test de ejecucion para for each AsParallel Dim start2 As DateTime = Now Dim pings2 = From ip In ips.AsParallel() Select New Ping().Send(ip) For Each ping In pings2 Console.WriteLine("{0} : {1}", ping.Status, ping.Address) Next Console.WriteLine(Now.Subtract(start2)) Console.ReadLine() End Sub
Saludos,
PepLluis,
Eso si, después de conversar con un amable lector, ADVERTIROS… que como todo debe hacerse un buen uso con criterio y conocimiento de causa, aplicándolo en funciones donde se justifique : Pero sin dejar de transmitiros que también es contraproducente dejar de usar las ventajas de utilizar grandes facilidades por el miedo que nos produce experimentar con ellas… así que Ánimos… AsParallel! (Gracias HB)