bao*_*ozi 1 c# parallel-processing
indexed parallel.foreach与正常的顺序循环相比,为什么以下几乎是两倍慢?它与资源争用有关吗?
static void Main(string[] args)
{
var values = Enumerable.Range(0, 100000).Select(v => v+v);
Stopwatch s = Stopwatch.StartNew();
//int index = 0;
//foreach (double value in values)
//{
// Console.WriteLine("{0}:\t{1}", index, value);
// index++;
//}
Parallel.ForEach(values, (value, pls, index) =>
{
Console.WriteLine("{0}:\t{1}", index, value);
index++;
});
Console.WriteLine(s.Elapsed.TotalMilliseconds);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*rvy 14
在Console只能实际执行一个Write在同一时间,所以你的第二个版本是花了很多时间创建多个线程,调度工作为他们每个人,然后只是有所有,但其中一人坐在那里等待的人,直到他们全部完成.你得到了多线程的所有开销而没有任何好处,因为你实际上没有并行完成任何工作.
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |