【发布时间】:2013-05-02 23:21:01
【问题描述】:
我正在更新一个程序,除其他外,它会检查给定路径中是否存在文件。这些文件可以位于主路径之外的许多子目录中的任何一个中。以前,我们在整个路径中搜索与给定模式匹配的文件,但部分更新是我们现在有一个单独的数组,其中包含我们期望拥有的文件列表。
鉴于该数组的存在,我正在考虑两种选择:
对
Directory.EnumerateFiles(startingPath, pattern, SearchOption.Alldirectories)使用相同的调用,然后对照我的数组检查结果(可能通过 lambda)。对数组的每个成员多次调用
File.Exists()。
在一般情况下,对于任何给定的调用,我们在数组中讨论 3 个或更少的文件。在高端的情况下,我们仍然在谈论不到十几个。大多数执行将涉及成百上千次调用。
这个程序已经是一个资源消耗者,所以我肯定想在这里使用最有效的方法。哪个更有效率?有没有更好的办法?将文件名的数据结构从数组更改为另一种类型是可能的,如果这会带来改进的话。
【问题讨论】:
-
两个都试一下,看看哪个更快,然后继续。这将在很大程度上取决于您的案例的具体情况,即目录树有多大,找到值的可能性,您正在搜索的项目的物理存储设备数量的规格等。为什么要猜测什么时候可以只需尝试使用您的实际数据和知道。 For further reading