Ric*_*ett 9 .net performance file-io
我正在从.NET应用程序中搜索大量(~200,000)文件的中等数量(~500)的文件夹.
我希望使用DirectoryInfo.GetFiles,传入SearchOption.AllDirectories.然而,这种方法似乎比编写我自己的代码来迭代目录并且GetFiles只是传入一个searchPattern.
相关的MSDN信息:
GetFiles(String)GetFiles(String, SearchOption)有人有类似的经历吗?
Ant*_*lev 13
这两个功能实际上因其性能而臭名昭着.原因是GetFiles遍历整个目录树并构造一个FileInfo对象数组,然后才将结果返回给调用者.所述阵列的构造涉及大量内存分配(我确信它们在List内部使用,但仍然),因为无法提前知道条目的数量.
如果你真的进入了性能,你可以P/Invoke到FindFirstFile/FindNextFile/FindClose,一次将它们抽象为一个IEnumerable<FileInfo>和yield FileInfo一个.
| 归档时间: |
|
| 查看次数: |
4133 次 |
| 最近记录: |