【发布时间】:2019-08-22 14:52:20
【问题描述】:
您能否解释一下示例 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();
}
}
【问题讨论】:
-
如果你想要更好的性能,你可能想要使用数组,但我相信这些都是一样的。创建一个测试套件,将在同一对象上执行的函数计时几千次。这会告诉你哪个跑得更快。
-
为什么不简单地通过测量来尝试一下?
-
我不想要更好的性能,我不是要求这个真实的案例场景。只是想知道我展示的第二种方法是否真的避免了可能由创建辅助数据结构引起的开销。
-
我只是在搜索我要求“速度性能”的地方。通过将事情做得“更好”而不是更快,某些事情可以比其他事情表现得更好。
标签: c# .net performance oop iterator