Sdílet prostřednictvím


Postupy: Určení režimu spouštění v PLINQ

Tento příklad ukazuje, jak vynutit na PLINQ obejití výchozí heuristiky a paralelizování dotaz bez ohledu na tvar dotazu.

Poznámka k upozorněníUpozornění

Tento příklad je určen k prokázání využití a může běžet rychleji než ekvivalentní sekvenční LINQ dotazu objektů.Další informace o Vančurovou Principy Vančurovou v PLINQ.

Příklad

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 je navržen tak, aby využil příležitosti pro paralelizaci. Ne všechny dotazy však mají prospěch z paralelního spuštění. Například pokud dotaz obsahuje delegát jednoho uživatel, který dělá velmi málo práce, dotaz bude obvykle běžet rychleji v sekvenčním režimu. Důvodem je, že režie spojená s povolením paralelního spuštění je větší než zrychlení, který je získáno. Proto PLINQ automaticky ne paralelizuje každý dotaz. Nejprve zkontroluje tvar dotazu a různé operátory, které ji tvoří. Na základě této analýza PLINQ v výchozí režimu spouštění může rozhodnout o provádění některých nebo všech dotazů sekvenčně. V některých případech však může vědět více o vašem dotazu než PLINQ je schopen určit ze své analýza. Například můžete vědět, že delegát je velmi náročný a dotaz bude jednoznačně profitovat z využití paralelizace. V takových případech můžete WithExecutionMode<TSource> metodou a určit ForceParallelism hodnotu pokyn PLINQ vždy spustit dotaz jako paralelní.

Probíhá kompilace kódu

Vyjměte a vložte tento kódu do PLINQ Data Sample a zavolejte metodu z Main.

Viz také

Odkaz

AsSequential<TSource>

Koncepty

Paralelní LINQ (PLINQ)

Historie změn

Datum

Poslední dokumenty

Důvod

Květen 2010

Byla přidána poznámka týkající se používání vs. Vančurovou.

Názory zákazníků