我写了两个简单的循环。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