Compartilhar via


Como: Especificar o modo de execução no PLINQ

Este exemplo mostra como forçar o PLINQ para ignorar a heurística de padrão e executar em paralelo a uma consulta, independentemente da forma da consulta.

Observação de cuidadoCuidado

Este exemplo destina-se para demonstrar o uso e pode não ser executado mais rápido do que o equivalente LINQ to Objects seqüencial de consulta de.Para obter mais informações sobre o aumento de velocidade, consulte Aumento de velocidade de compreensão no PLINQ.

Exemplo

Private Shared Sub ForceParallel()
    Dim customers = GetCustomers()
    Dim parallelQuery = (From cust In customers.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism) _
        Where cust.City = "Berlin" _
        Select cust.CustomerName).ToList()
End Sub
// Paste into PLINQDataSample class.
static void ForceParallel()
{
    var customers = GetCustomers();
    var parallelQuery = (from cust in customers.AsParallel()
                            .WithExecutionMode(ParallelExecutionMode.ForceParallelism)
                         where cust.City == "Berlin"
                         select cust.CustomerName)
                        .ToList();
}

PLINQ é projetado para explorar oportunidades de paralelização. No entanto, nem todas as consultas beneficiam em execução em paralelo. Por exemplo, quando uma consulta contém um delegado de usuário único que faz muito pouco trabalho, a consulta será normalmente executada mais rapidamente seqüencialmente. Isso ocorre porque a sobrecarga envolvida na execução de parallelizing de ativação é mais cara que o aumento de velocidade é obtido. Portanto, o PLINQ não automaticamente paralelizar cada consulta. Primeiro, ele examina a forma da consulta e os vários operadores que o compõem. Essa análise, PLINQ no modo de execução padrão pode decidir executar alguns ou todos a consulta seqüencialmente. No entanto, em alguns casos você pode saber mais sobre a sua consulta de PLINQ é capaz de determinar a partir de sua análise. Por exemplo, você pode saber que um representante é muito caro e que a consulta definitivamente beneficiará paralelização. Em tais casos, você pode usar o WithExecutionMode<TSource> método e especificar o ForceParallelism valor para instruir o PLINQ sempre executar a consulta como paralelo.

Compilando o código

Recortar e colar esse código para o Amostra de dados do PLINQ e chamar o método de Main.

Consulte também

Referência

AsSequential<TSource>

Conceitos

Parallel LINQ PLINQ)

Histórico de alterações

Date

History

Motivo

Maio de 2010

Observação adicionada referentes ao uso vs. aumento de velocidade.

Comentários do cliente.