我在一个项目中工作,我必须从驱动器中枚举文件名。我尝试了两种方法
- MFT解析和
- FindFirstFile 的多线程。我比较了两种实现的执行时间,它显示 MFT 大小越小,执行速度越快,如果 MFT 大小超过 GB,则执行时间越长。
我的观察是:
- 卷 C:MFT 大小:1.85 GB exe 时间:65 秒核心线程数:9 秒
- 卷 D:MFT 大小:38 MB exe 时间:0.593 秒核心线程数量:1 秒
- 卷 C:MFT 大小:1.02 GB exe 时间:11 秒核心线程数:3 秒
- 卷 D:MFT 大小:89.75 MB exe 时间:1 秒核心线程数量:2 秒
Ps 从两台单独的机器上进行的测量。
有了这些观察,我有点困惑 MFT 的解析是否取决于它的大小?为什么线程不能为更小尺寸的 MFT 提供更好的解决方案?