Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VS2010 RC1: Task Parallel Library – Parallel.ForEach()

Este método executa um ciclo semelhante à instrução For Each, mas que possibilita a execução em paralelo. É muito semelhante ao exemplo do artigo anterior, mas difere do Parallel.For() pois é usado quando os dados são colecções ou arrays.

Eis um exemplo da sua implementação/utilização:

Imports System.Threading
Imports System.Threading.Tasks

Module Module1

  Sub Main()
    Dim result1, result2 As Long
    Dim values = Enumerable.Range(0, 49)

    Dim sw As New Stopwatch
    sw.Start()

    ' ------------------------------------------------
    ' Ciclo For Each
    ' ------------------------------------------------
    For Each value As Integer In values
      Console.WriteLine("Value:{0} GUI:{1}", value.ToString(), Guid.NewGuid())
      Thread.SpinWait(50000000)
    Next

    result1 = sw.ElapsedMilliseconds

    sw.Restart() ' <- novo método no Visual Studio 2010

    ' ------------------------------------------------
    ' Ciclo Parallel.ForEach
    ' ------------------------------------------------
    Parallel.ForEach(values, Sub(value)
                               Console.WriteLine("Value:{0} GUI:{1}",
                                                 value.ToString(),
                                                 Guid.NewGuid())
                               Thread.SpinWait(50000000)
                             End Sub)

    result2 = sw.ElapsedMilliseconds
    sw.Stop()

    Console.WriteLine("Tempo de execução 'For Each' {0} ms", result1)
    Console.WriteLine("Tempo de execução 'Parallel.ForEach' {0} ms", result2)
    Console.ReadKey(True)

  End Sub

End Module

E os resultados são uma vez mais significativos:

É mais um ciclo disponível da Task Parallel Library (TPL) – Parallel Extensions, que quando bem aplicado pode melhorar bastante o desempenho da aplicação.

0 comentários:

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico