Parallel 替代 For 循環,為你的程序提升效率吧


現代的計算機以前不像以前的計算機了,所以,我們的代碼也需要優化了,如果仍然按照舊的處理方式,就不能將用戶的計算機性能發揮出來,這也是提升用戶體驗的一種方式!

Parallel 是C#4.0 提供一種並行的處理方式,如果你的的For循環是可以並行的且涉及大量的工作,那么請用Parallel的For替換你的for循環吧,這會大大提升程序的效率

先貼代碼吧:

static int[] _Data;

static Stopwatch _Sw = new Stopwatch();

static void Main(string[] args)
{
//prepare data
_Data = new int[10];
for (int i = 0; i < _Data.Length; i++)
_Data[i] = i;

_Sw.Start();
NewMethod();
_Sw.Stop();
Console.WriteLine("new use time :{0}", _Sw.ElapsedMilliseconds);
_Sw.Restart();
OldMethod();
Console.WriteLine("old use time :{0}", _Sw.ElapsedMilliseconds);
Console.ReadKey();
}

static void NewMethod()
{
Parallel.For(0, _Data.Length, DoMethod);
}


static void OldMethod()
{
for (int i = 0; i < _Data.Length; i++)
DoMethod(i);
}


static void DoMethod(int i)
{
//輸出當前的i 並模擬耗時操作
Console.WriteLine("Do:{0}", i);
Thread.Sleep(500);
}

 

Parallel.For是自動創建了多個線程,並行的執行DoMethod,所以每次執行都是無序的,如果你的的For循環是可以並行的且涉及大量的工作,,那么用Parallel吧,可以看到cpu利用率猛的飆了上去哦

ps:線程是昂貴的,如果是簡單的循環,使用for循環吧,因為創建並行任務和執行上下文切換的時間將超過使用並行節省的時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM