有下面两个方法
private static void NormalMethod()
{
long start = DateTime.Now.Ticks;
for (int i = 0; i < 10000000; i++)
{
}
Console.WriteLine(DateTime.Now.Ticks - start);
} private static void ParallelMethod()
{
long start = DateTime.Now.Ticks;
Parallel.For(0, 10000000, i=>{});
Console.WriteLine(DateTime.Now.Ticks - start);
}
我试验之后竟然是NormalMethod执行速度更快,为啥啊?
private static void NormalMethod()
{
long start = DateTime.Now.Ticks;
for (int i = 0; i < 10000000; i++)
{
}
Console.WriteLine(DateTime.Now.Ticks - start);
} private static void ParallelMethod()
{
long start = DateTime.Now.Ticks;
Parallel.For(0, 10000000, i=>{});
Console.WriteLine(DateTime.Now.Ticks - start);
}
我试验之后竟然是NormalMethod执行速度更快,为啥啊?
并行计算有额外开销,如果只有一个CPU,非并行执行速度快并不奇怪。
1:for (int i = 0; i < 10000000; i++)
{
}
被编译器直接优化掉了
2:你是单核的机器
。
http://www.dotblogs.com.tw/asdtey/archive/2010/05/08/parallelforforeach.aspx
这个讲的比较仔细