从一个目录中读取许多小文件是多么有问题

How problematic is it to read many small files from one directory?

本文关键字:文件 许多小 读取 有问题 一个      更新时间:2023-10-16

我必须读取许多(最多500万个)小(9 KB)文件。目前它们都在一个目录中。我担心这需要花费2次的时间甚至是n^2 log n的时间来查找,对吗?这很重要吗(查找会比实际读取花费更多时间吗)?当文件被操作系统缓存时,运行时的渐近行为是否有差异?

我使用c++流来读取文件。目前我使用的是带有NTFS的Windows 7,但稍后我将在linux集群上运行该程序(不确定是哪个文件系统)。

情况可能没那么糟:如果枚举文件,并在遇到每个文件名时处理它,那么操作系统很可能在其磁盘缓存中有目录条目。实际上,磁盘缓存是0(1)。

杀死你的是一个机械硬盘。您将有500万次磁盘搜索,每次搜索大约需要1/100秒。这是5万秒,比半天还多。