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

时间:2016-09-12 12:02:02

标签: c++ linux windows

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

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

1 个答案:

答案 0 :(得分:4)

可能没那么糟糕:如果你枚举文件,并在遇到文件时处理每个文件名,你的操作系统很可能在其磁盘缓存中有目录条目。并且出于实际目的,磁盘高速缓存是O(1)。

杀死你的是机械硬盘。你将有500万次磁盘搜索,每次搜索需要大约1/100秒。那是50.000秒,超过半天。这是一个为SSD而尖叫的任务。