glob(使用唯一前缀)是否比 readdir 更快?

Is glob (using a unique prefix) faster than readdir?

有一个包含很多文件的目录,我需要打开名为 00343dde41bac11ef7020935ee3d* 的文件。我怀疑只有一个这样的文件。

我知道访问一个文件fopen (3)比读取整个目录readdir (3)更快。

是否可以假设使用 glob (3) 会比简单地使用 readdir (3) 和测试文件名快得多(需要更少的磁盘访问)?还有一个更有力的说法:我可以假设 glob (3) 在这种情况下只有一个文件匹配并且我的模式使用前缀,应该和 fstat (3) 一样快吗?

研究:

在 *NIX 系统上,只有一个内核接口可以访问目录内容:readdir()。在内核级别,*NIX 系统不支持任何类型的 glob 或模式甚至前缀匹配。仅支持目录内容的哑线性列表。

glob()(或类似wordexp())是一个库函数,它是使用readdir()库函数实现的。除此之外,它还必须使用 glob 表达式执行匹配。它不能比手动编码 readdir() 循环更快。

P.S。再往下看,在文件系统级别:磁盘上的目录条目通常没有排序。因此,不可能优化部分文件名查找。 (此外,大多数文件系统都忽略了用于对文件名进行编码的字符集。)