HOW TO:在 PLINQ 中指定執行模式
更新:2010 年 5 月
這個範例顯示如何強制 PLINQ 略過其預設啟發式,直接平行處理查詢而不考慮查詢的型態。
警告 |
---|
這個範例是為了示範用法,執行速度可能比不上對應的循序 LINQ to Objects 查詢。如需加速的詳細資訊,請參閱認識 PLINQ 中的加速。 |
範例
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 是專為運用平行處理的機會而設計。 不過,不是所有查詢都適合平行執行方式。 例如,當查詢只包含一個執行極少工作的使用者委派時,以循序方式執行查詢通常會較快。 這是因為啟用平行化執行帶來的負荷高於所獲得的加速效益。 因此,PLINQ 並不會自動平行處理每個查詢。 它會先檢查查詢的型態和查詢中的各種運算子。 根據這項分析,在預設執行模式下的 PLINQ 可能會決定以循序方式執行局部或整個查詢。 不過,有時候相較於 PLINQ 從分析結果來做判斷,您可能還比較瞭解您自己的查詢。 例如,您可能知道某個委派非常耗費資源,所以很肯定平行化作業一定有益於查詢。 在這種情況下,您可以使用 WithExecutionMode<TSource> 方法並指定 ForceParallelism 值,以指示 PLINQ 永遠以平行方式執行查詢。
編譯程式碼
請將這段程式碼剪下並貼在 PLINQ 資料範例中,然後從 Main 中呼叫方法。
請參閱
參考
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 5 月 |
加入有關使用方式和 加速的比較注意事項。 |
客戶回函。 |