运行2 for循环的最快方法是什么?

时间:2011-08-15 08:00:58

标签: c#

我有简单的代码

for( int i = 0 ; i < arr.GetLength(0) ; i++)
{
    for( int j = 0 ; j < arr.GetLength(1) ; j++)
    {
         arr[i, j ] = 0;
    }
}

我需要让这段代码非常快 - 所以我想使用Tasks.Parallel.For

使用Parallel.For的最快速,最有效的方法是什么?

可以是这样的

Parallel.for( int i = 0 ; i < arr.GetLength(0) ; i++)
{
    Parallel.for( int j = 0 ; j < arr.GetLength(1) ; j++)
    {
         arr[i, j ] = 0;
    }
}

或只使用一个Parallel.for

2 个答案:

答案 0 :(得分:3)

最好只在外循环上使用Parallel.for(...)

这个想法是你可以并行执行内部循环迭代。

答案 1 :(得分:3)

将这种方法用于两个循环:

int length0 = arr.GetLength(0);
for( int i = 0 ; i < length0 ; i++)

它比每次调用方法都快。

和Parallel.for仅用于第一个循环