【发布时间】:2013-03-09 03:06:04
【问题描述】:
使用ToList()时,是否需要考虑性能影响?
我正在编写一个查询来从目录中检索文件,这就是查询:
string[] imageArray = Directory.GetFiles(directory);
但是,因为我喜欢使用List<>,所以我决定加入...
List<string> imageList = Directory.GetFiles(directory).ToList();
那么,在决定进行这样的转换时是否应该考虑某种性能影响 - 还是只在处理大量文件时才考虑?这是可以忽略不计的转换吗?
【问题讨论】:
-
+1 也想知道这里的答案。恕我直言,除非应用程序对性能至关重要,否则我想我总是使用
List<T>来支持T[]如果它使代码更具逻辑性/可读性/可维护性(当然,除非转换是 导致明显性能问题,在这种情况下我想我会重新访问它)。 -
从数组创建列表应该非常便宜。
-
@Sepster 我只指定我需要做的工作的具体数据类型。如果我不必致电
Add或Remove,我会将其保留为IEnumerable<T>(或者更好的是var) -
我认为,这种情况下最好调用
EnumerateFiles而不是GetFiles,这样只会创建一个数组。 -
GetFiles(directory),因为它目前是在 .NET 中实现的,所以new List<string>(EnumerateFiles(directory)).ToArray()几乎可以做到。所以GetFiles(directory).ToList()创建一个列表,从中创建一个数组,然后再次创建一个列表。就像 2kay 说的那样,你应该更喜欢在这里做EnumerateFiles(directory).ToList()。
标签: c# arrays performance list