Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Sie PLINQ anweisen, die Standardheuristik zu übergehen und eine Abfrage unabhängig von deren Form zu parallelisieren.
Vorsicht |
|---|
Dieses Beispiel soll die Verwendung veranschaulichen, und es wird möglicherweise nicht schneller als die entsprechende sequenzielle LINQ to Objects-Abfrage ausgeführt.Weitere Informationen über Geschwindigkeitssteigerungen finden Sie unter Grundlagen zur Beschleunigung in PLINQ. |
Beispiel
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 wurde speziell auf die Nutzung von Parallelisierungsmöglichkeiten ausgelegt. Nicht alle Abfragen profitieren jedoch von einer parallelen Ausführung. Wenn eine Abfrage beispielsweise nur einen Benutzerdelegaten enthält, der relativ wenige Aufgaben ausführt, wird die Abfrage normalerweise im sequenziellen Modus schneller ausgeführt. Dies ist darauf zurückzuführen, dass der Mehraufwand für die Aktivierung der parallelen Ausführung größer ist als die erzielten Geschwindigkeitsvorteile. Aus diesem Grund parallelisiert PLINQ nicht automatisch alle Abfragen. Zunächst werden die Form der Abfrage und die zahlreichen Operatoren, aus denen diese besteht, untersucht. Anhand dieser Analyse entscheidet sich PLINQ im Standardausführungsmodus möglicherweise, eine Abfrage ganz oder teilweise sequenziell auszuführen. In bestimmten Fällen kann es vorkommen, dass Ihnen mehr Informationen zu einer Abfrage vorliegen, als PLINQ in der Analyse ermitteln kann. Sie wissen beispielsweise, dass ein Delegat besonders aufwändig ist und dass die Abfrage definitiv von einer Parallelisierung profitiert wird. In solchen Fällen können Sie die WithExecutionMode<TSource>-Methode verwenden und den ForceParallelism-Wert angeben, um PLINQ anzuweisen, dass die Abfrage stets parallel ausgeführt werden soll.
Kompilieren des Codes
Schneiden Sie diesen Code aus, fügen Sie ihn in PLINQ-Datenbeispiel ein, und rufen Sie die Methode von Main aus auf.
Siehe auch
Referenz
Konzepte
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
|---|---|---|
|
Mai 2010 |
Hinweis bezüglich Verwendung und Geschwindigkeitssteigerung hinzugefügt. |
Kundenfeedback. |
Vorsicht