gpt4 book ai didi

c# - 循环内循环性能

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:08 24 4
gpt4 key购买 nike

我发布这篇文章的唯一原因是因为我确实相信我的代码性能受到此代码块的影响,我在另一个代码块中使用了 foreach 循环。

我想知道是否有人会提出任何有助于提高性能的不同建议,或者可能指出代码中的其他一些缺陷。

    public override void DisplayScore()
{
byte MessageLocation = 0;
foreach (var kvp in PlayerScores.OrderByDescending((s => s.Value)))
{
if (MessageLocation == 5)
break;

if (MessageLocation == PlayerScores.Count)
break;

foreach (var player in PlayerList.Values)
{
SendMessage(MessageLocation, "My text");
}
Score++;
}
}

如您所见,它只是按降序显示字典中的前 5 个分数(在不同位置),并将它们发送到另一个字典中的玩家列表。

最佳答案

我不认为双循环是问题所在。我建议检查 LINQ 查询 PlayerScores.OrderByDescending((s => s.Value))。根据分数的数量,这可能需要时间来排序,尤其是如果值来自字典。字典的内部结构使得通过键和值进行枚举的成本很高。

您可以使用以下代码(略有改进)和 Visual Studio 2015 对其进行测试,在哪里可以看到,单个执行步骤需要多长时间:

public override void DisplayScore()
{

var scores = PlayerScores.OrderByDescending(s => s.Value).Take(5).ToArray();

foreach (var kvp in scores)
{
foreach (var player in PlayerList.Values)
{
SendMessage(MessageLocation, "My text");
}
}
}

关于c# - 循环内循环性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935541/

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