2010年12月9日

發揮多核心處理器的運算效能,使用 C# 及 Task Parallel Library

.NET Framework 4 提供一組平行處理函式庫「Task Parallel Library」(簡稱TPL),可以很容易用 C# 或 VB.NET 寫出多核心環境的平行運算程式。

使用TPL必須先引用Namespace:
using System.Threading.Tasks;

以下範例使用 Math.Sqrt 計算平方根:

//循序處理的寫法
for (int i = 0; i <= int.MaxValue/2; i++)
{
  Math.Sqrt(i);
};



//平行處理的寫法
Parallel.For(0, int.MaxValue/2, i =>
{
  Math.Sqrt(i);
});



測試環境是 Intel Core2Duo P8700 (2.53GHz雙核心)、Windows 7 32bit作業系統。從CPU Usage的圖形可以看出,循序處理的版本要花費很長的時間才能完成,過程中CPU也僅有60-70%的使用率,根本無法發揮多核心電腦應有的效能。使用平行處理的版本,整個執行過程耗費的時間減少很多,而且兩個CPU都是以100%滿載運作。

※ 本文同步發表於「dotNET探索樂園

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!