gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:27 24 4
gpt4 key购买 nike

我为一个文件夹中的 1000 个文件运行 stat64(),用时不到 1 秒,但当同一目录中有 5000 个文件时,时间增加到 15s

为什么 stat64 () 非线性地变慢?我原以为时间是5秒

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

最佳答案

当您为包含 N 个条目的目录中的文件调用 stat64 时,复杂度为 O(N),因为对于 FAT 文件系统,系统必须遍历所有目录条目并进行比较每个到您正在寻找的那个。

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

看看你的例子:当你有 stat64 因子 5 文件时,你需要因子 25 时间。如果您的 1s 时间实际上是 0.6 秒,那么结果符合预期。

关于c - 为什么 linux 中的 stat64() 随着目录中文件数量的增加而变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com