使用 ToList() 与 new List(IEnumerable) 之间的性能差异

2024-01-12

我很好奇在 IEnumerable 上使用 ToList() 与仅调用列表构造函数“List(IEnumerable)”相比对性能的影响。

Example:

int[] testArray = new int[10];
var list = testArray.ToList();

vs.

int[] testArray = new int[10];
var list = new List<int>(testArray);

使用其中一种相对于另一种是否有任何性能影响或最佳实践?

我已经接管了一个应用程序,其中我调用的控制器方法返回一个数组,但我所拥有的视图需要一个列表。


就像其他人已经说过的那样,大多数时候最好的做法是做更具可读性的事情(我认为这里意味着使用ToList())。两种方法执行完全相同的操作,因此您应该期望它们的性能非常相似。

如果分析显示这是您需要优化的代码,那么您应该尝试两种方法并衡量哪一种更快。

并查看源代码(对于.Net基础库,您可以查看参考来源 http://referencesource.microsoft.com/或使用反编译器)也可能有帮助。ToList http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs#e276d6892241255b看起来像这样:

public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source) {
    if (source == null) throw Error.ArgumentNull("source");
    return new List<TSource>(source);
}

所以,它的性能应该与new List, 加一null检查和一种方法调用。但这两项新增功能都可能会被优化掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ToList() 与 new List(IEnumerable) 之间的性能差异 的相关文章

随机推荐