我正在编写一个程序,它使用简单的循环和递归多次遍历文件系统。
问题在于,因为我正在多次迭代,所以需要很长时间,因为(我猜)硬盘只能以一定的速度工作。
有没有办法优化这个过程?也许通过迭代一次,将所有相关信息保存在集合中,然后在需要时引用该集合?
我知道我可以像这样缓存我的结果,但我完全不知道如何去做。
编辑:
我试图从给定目录中获取三条主要信息:
以上所有内容也包括子目录。目前,我正在执行给定目录的迭代以获取每条信息,即每个目录三次迭代。
我的输出基本上是一个电子表格,如下所示:
答案 0 :(得分:1)
是否可以采取任何措施来最大限度地减少硬盘I / O,从而提高性能。我还建议使用秒表并测量所需的时间,以便了解您的改进对速度的影响。
答案 1 :(得分:1)
要提高性能,您可以直接访问NTFS文件系统的主文件表(MFT)。 MSDN社交论坛上有一个很好的代码示例。 似乎访问MFT的速度比使用FindFirst / FindNext文件枚举文件系统快大约10倍。
希望,这有帮助。