0

我正在编写一个程序,它使用简单的循环和递归多次遍历文件系统。

问题是,因为我多次迭代,所以需要很长时间,因为(我猜)硬盘只能以一定的速度工作。

有没有办法优化这个过程?也许通过迭代一次,将所有相关信息保存在一个集合中,然后在需要时引用该集合?

我知道我可以像这样缓存我的结果,但我完全不知道该怎么做。

编辑:

我试图从给定目录中获取三个主要信息:

  • 目录的大小(该目录中每个文件大小的总和)
  • 目录中的文件数
  • 目录中的文件夹数

以上所有内容也包括子目录。目前,我正在执行给定目录的迭代以获取每条信息,即每个目录三个迭代。

我的输出基本上是一个电子表格,如下所示:

程序输出

4

2 回答 2

1

是的,你可以做的任何事情来最小化硬盘 I/O 都会提高性能。我还建议放置一个秒表并测量它所花费的时间,这样您就可以了解您的改进如何影响速度。

于 2011-08-31T16:02:04.010 回答
1

为了提高性能,您可以直接访问 NTFS 文件系统的主文件表 (MFT)。MSDN社交论坛上有一个优秀的代码示例。访问 MFT 似乎比使用 FindFirst/FindNext 文件枚举文件系统快 10 倍。

希望这可以帮助。

于 2011-08-31T17:57:59.857 回答