我寫了兩個簡單的循環。Parrallel.For循環執行速度比
一種是使用 '的' 標準:
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
Console.WriteLine(i);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.ReadKey();
其次是使用Parrallel.For,其假設是速度快:
sw.Restart();
Parallel.For(0,1000000,i =>
{
Console.WriteLine(i);
});
sw.Stop();
Console.WriteLine(sw.Elapsed);
不幸的是,它需要約53秒鐘的第一執行,大約1分50秒到第二個(!!!)。
這是爲什麼,我做錯了什麼?
因爲線程必須同步才能寫入控制檯?嘗試做一些實際的工作。 – GSerg 2013-05-09 08:54:22
起初,有一個數據庫寫入,而不是寫入控制檯,它仍然執行較慢。 – ohadinho 2013-05-09 08:57:13
那麼,db也是使鎖/同步發生的共享資源。爲了獲得性能優勢,您應該儘量避免在並行代碼中使用這些資源。 – GSerg 2013-05-09 09:00:57