gpt4 book ai didi

c# - IEnumerable.Any 是否比带有中断的 for 循环更快?

转载 作者:太空狗 更新时间:2023-10-29 22:05:22 25 4
gpt4 key购买 nike

我们在打开表单的代码中遇到了一些缓慢的情况,这可能是由于 for 循环和 break 需要很长时间才能执行。我将其切换为 IEnumerable.Any() 并看到表单打开得非常快。我现在试图弄清楚是否单独进行此更改会提高性能,或者它是否可以更有效地访问 ProductIDs 属性。此实现是否应该更快,如果是,为什么?

原始实现:

public bool ContainsProduct(int productID) {
bool containsProduct = false;
for (int i = 0; i < this.ProductIDs.Length; i++) {
if (productID == this.ProductIDs[i]) {
containsProduct = true;
break;
}
}
return containsProduct;
}

新实现:

public bool ContainsProduct(int productID) {
return this.ProductIDs.Any(t => productID == t);
}

最佳答案

称之为有根据的猜测:

this.ProductIDs.Length

这可能就是速度慢的地方。如果 ProductIDs 的列表在每次迭代中都从数据库中检索(例如)以获取 Length,那确实会非常慢。您可以通过分析您的应用程序来确认这一点。

如果不是这种情况(比如 ProductIDs 在内存中并且 Length 被缓存),那么两者应该有几乎相同的运行时间。

关于c# - IEnumerable.Any 是否比带有中断的 for 循环更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359092/

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