为什么linux中的stat64()会随着目录中文件数量的增加而变慢?

时间:2014-11-14 05:13:04

标签: c linux fat

我在一个文件夹中运行stat64() 1000个文件并且花费不到1秒,但是当同一目录中有5000个文件时,时间增加到15s

为什么stat64 ()非线性变慢?我期待时间是5s

修改 我正在从带有FAT文件系统的USB读取数据。

1 个答案:

答案 0 :(得分:3)

当您为包含N个条目的目录中的文件调用stat64时,复杂性为O(N),因为对于FAT文件系统,系统必须遍历所有目录条目并将每个目录条目与你要找的人。

当您在包含N个条目的文件夹中调用stat64次M次时,复杂度为O(M * N),如果M = N,则最终得到O(N * N)

看看你的例子:当你拥有和stat64因子5个文件时,你需要25倍的时间。如果你的1s时间实际上是0.6秒,那么结果就像预期的那样。