我在一个文件夹中运行stat64()
1000个文件并且花费不到1秒,但是当同一目录中有5000个文件时,时间增加到15s
。
为什么stat64 ()
非线性变慢?我期待时间是5s
修改 我正在从带有FAT文件系统的USB读取数据。
答案 0 :(得分:3)
当您为包含N个条目的目录中的文件调用stat64
时,复杂性为O(N),因为对于FAT文件系统,系统必须遍历所有目录条目并将每个目录条目与你要找的人。
当您在包含N个条目的文件夹中调用stat64
次M次时,复杂度为O(M * N),如果M = N,则最终得到O(N * N)
看看你的例子:当你拥有和stat64因子5个文件时,你需要25倍的时间。如果你的1s时间实际上是0.6秒,那么结果就像预期的那样。