gpt4 book ai didi

集合和迭代器的 C# 性能

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

您能否解释一下示例 1 中采用的方法与示例 2 中的方法在性能上是否不同?如果是,哪个最有效,为什么。

我所说的“性能”不仅与执行速度有关。我还想要一些关于不同系统资源使用的解释。

1.

    private IEnumerable<string> GetObjectsStrings(List<object> input)
{
IList<string> result = new List<string>();

foreach (var item in input)
{
result.Add(item.ToString());
}

return result;
}

2.

    private IEnumerable<string> GetObjectsStrings(List<object> input)
{
foreach (var item in input)
{
yield return item.ToString();
}
}

最佳答案

在场景 1 中,您正在处理整个列表,然后通过 IEnumerable 接口(interface)返回该列表。无论调用者打算对返回的 IEnumerable 做什么,每次调用 GetObjectsStrings 时都会处理整个列表。

在场景 2 中,您只处理调用者所需的 input 列表中的条目。所以,您正在创建一个迭代器。

这是一个会产生影响的例子:

var temp = GetObjectsStrings(input).First();

场景 1:您每次都为每个这样的调用完整地处理 input。场景 2:您只处理 input 中的第一项。然后,迭代完成。

关于集合和迭代器的 C# 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455124/

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