gpt4 book ai didi

c# - 线程嵌套的foreach循环?

转载 作者:行者123 更新时间:2023-11-30 21:24:21 24 4
gpt4 key购买 nike

你好!

我正在尝试构建一个程序,用暴力计算各种项目的最佳分数。而且我相信,在多核 CPU 的系统上,借助线程可以提高计算速度。如我错了请纠正我。但是我该如何实现呢?

这是我的代码的一部分,它可以很好地完成工作(没有线程)。

private double _bestScore = 0.0;

private void BruteForce()
{
foreach (Stats head in _heads)
foreach (Stats chest in _chests)
foreach (Stats leg in _legs)
foreach (Stats feet in _feets)
{
int stamina = head.sta + chest.sta + leg.sta + feet.sta;
int power = head.power + chest.power + leg.power + feet.power;
int armor = head.armor + chest.armor + leg.armor + feet.armor;
int hit = head.hit + chest.hit + leg.hit + feet.hit;

double total = stamina * _scaleSta + power * _scalePower + armor * _scaleArmor;

if (total > _bestScore && hit >= 100)
{
_bestScore = total;

// Store best setup for output when done with bruteforce
_bestHead = head;
_bestChest = chest;
_bestLeg = leg;
_bestFeet = feet;
}
}
}

那么,有没有办法通过线程来改善这一点?

编辑:修复了打字错误并更新为包含另一个统计数据,命中。命中必须达到 100 才能成为“最佳成绩”的可能部分。这样做是为了让我无法先检查每个单独的插槽来尝试找到最好的装备。命中是一个非常重要的属性,直到 100,但是 100 之后的每一点都没有用。此外,我的这部分代码有更多的 foreach 循环(28 个而不是 4 个)。所以迭代次数很多。但是,每个列表(_heads、_chests 等)通常最多包含 2 个项目。

最佳答案

如果您想要添加多线程的简单方法,请查看 Parallel Extensions for .NET .出于性能原因,您只想在最外层循环上调用 Parallel.For()。

关于c# - 线程嵌套的foreach循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com