小编Tom*_*rat的帖子

在并行for循环中测试2个数组是否相等

我目前有一个for循环来比较2个数组并确定它们是否相等.

public override bool Equals(object obj)
{
    RushHourPathLengthNode otherNode = (RushHourPathLengthNode)obj;

    // Compare their carCoords and return false as soon as we find a difference
    for (int i = 0, l = carCoords.Length; i < l; ++i)
        if (carCoords[i].x != otherNode.carCoords[i].x || carCoords[i].y != otherNode.carCoords[i].y)
            return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但它是我的程序中最慢的部分之一.这样我的测试用例大约需要7秒钟来计算.

虽然我可能运行50K任务,但我的i7 860 CPU(4核,8个线程)的CPU使用率约为50%.

我的想法是使用并行for循环来最大化CPU使用率并使其更快.这就是我提出的.

public override bool Equals(object obj)
    {
        RushHourPathLengthNode otherNode = (RushHourPathLengthNode)obj;
        bool result = true;

        Parallel.For(0, carCoords.Length, (i, loopState) =>{
            if (!result)
                loopState.Stop();

            if (carCoords[i].x != …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing task-parallel-library

5
推荐指数
1
解决办法
631
查看次数