你好
我不确定是否有可能减少我的程序的加载时间,或者我是否必须切换到SSD。也许有人有想法:)
我从大量的文件夹中获取第一个(最多)100个文件,并将其路径写入一个列表。问题是加载这个列表需要很长时间,因为我总是把文件夹的全部内容放到一个临时列表中,然后把这个临时列表的前100个条目写到我的最终列表中。如果我能跳过这个额外的步骤,也许会更快,但我不确定这是否可能,这是否会有任何不同。
我的代码看起来像这样:
foreach (string Folder in FolderList)
{
List<string> FileListTMP = new List<string>();
FileListTMP.AddRange(Directory.GetFiles(Folder));
int i = 0;
while (i < FileListTMP.Count && i < 100)
{
FileList.Add(FileListTMP[i]);
i++;
}
}
字符串
这将是伟大的,如果有一个解决我的问题,因为文件夹的数量总是在增长,加载时间已经在20秒左右长。:)
**更多信息:**目前大约有1500个文件夹。单个文件夹中的文件不超过1000个。平均每个文件夹大约有500个文件。
1条答案
按热度按时间6l7fqoea1#
您发布的代码直接等效于
字符串
但是在这段代码中唯一需要花费大量时间的是
GetFiles
-调用。如果要处理数百万个项,则在列表之间移动内容可能是一个问题,但如果要处理数百个项,则不应成为问题。但是您应该使用性能分析器来验证这个假设,也许有一些完全不同的东西需要时间。您可以尝试将
.GetFiles
更改为.EnumerateFiles
,因为后者返回可枚举对象而不是数组,因此如果您不需要所有文件的完整列表,可能会更快。根据我的经验,在使用本机API而不是
GetFiles
列出文件时,也可能获得性能加速。类似于this answer。但它确实需要相当多的复杂代码。