gpt4 book ai didi

c# - 这些 for 循环中的一个比另一个更快吗?

转载 作者:太空狗 更新时间:2023-10-29 19:48:23 24 4
gpt4 key购买 nike

for (var keyValue = 0; keyValue < dwhSessionDto.KeyValues.Count; keyValue++)
{...}


var count = dwhSessionDto.KeyValues.Count;
for (var keyValue = 0; keyValue < count; keyValue++)
{...}

我知道两者之间存在差异,但是其中一个比另一个更快吗?我认为第二个更快。

最佳答案

是的,第一个版本要慢很多。毕竟,我假设您正在处理这样的类型:

public class SlowCountProvider
{
public int Count
{
get
{
Thread.Sleep(1000);
return 10;
}
}
}

public class KeyValuesWithSlowCountProvider
{
public SlowCountProvider KeyValues
{
get { return new SlowCountProvider(); }
}
}

在这里,您的第一个循环将花费约 10 秒,而您的第二个循环将花费约 1 秒。

当然,您可能会争辩说您正在使用此代码的假设是不合理的 - 但我的观点是正确的答案将取决于所涉及的类型,而问题并未说明这些类型是什么。

现在,如果您实际上处理一种类型,其中访问KeyValuesCount 很便宜(很有可能),我不会预计会有很大差异。请注意,我几乎总是喜欢尽可能使用 foreach:

foreach (var pair in dwhSessionDto.KeyValues)
{
// Use pair here
}

这样你就永远不需要计数了。但是,你也没有说你想在循环内做什么。 (提示:要获得更有用的答案,provide more information。)

关于c# - 这些 for 循环中的一个比另一个更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344336/

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