使用Parallel.ForEach 進行並行化處理
在.NET 程式設計中,傳統的foreach 迴圈依序執行迭代,一次一個元素,使用單一線程。這種方法可能會導致涉及冗長或密集操作的任務處理速度變慢。
引入 Parallel.ForEach
Parallel.ForEach 方法允許利用多個執行緒進行並行處理。此方法同時運行迭代,將處理任務指派給可用執行緒。透過分配工作負載,Parallel.ForEach 可以顯著縮短執行時間,特別是對於緩慢或資料密集型進程。
但是,需要注意的是,Parallel.ForEach 可能並不總是更快。對於短或快速的進程,執行緒建立和管理所涉及的開銷可能超過效能優勢。
轉換為 Parallel.ForEach 的範例
請考慮使用以下程式碼foreach循環:
string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { // Perform operations on each line }
使用以下程式碼重寫此程式碼Parallel.ForEach:
Parallel.ForEach(list_lines, line => { // Perform operations on each line });
在此範例中,Parallel.ForEach 方法將list_lines 集合作為每一行建立一個新執行緒來並行執行指定的操作。
Foreach 循環和 Parallel.ForEach 之間的主要區別
Feature | Foreach Loop | Parallel.ForEach |
---|---|---|
Iteration Style | Sequential | Parallel |
Thread Usage | Single Thread | Multiple Threads |
Framework Availability | All .NET frameworks | .NET 4.0 and newer |
Overhead | Low for quick processes | Higher for quick processes due to thread creation and management |
Performance | Faster for short and quick processes | Faster for lengthy and data-intensive processes |
以上是在 .NET 中什麼時候應該使用 Parallel.ForEach 而不是 Foreach 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!