在 Debian(以及大多数 Linux 发行版)上,readdir 的性能取决于文件系统、目录大小、内核版本和使用方式,不能一概而论。下面从几个关键角度说明。
readdir 本身是什么readdir() 是 glibc 对 getdents / getdents64 系统调用的封装readdir 需要遍历大量 inode例如:一个目录 100 万文件,
ls或readdir可能要几秒到几十秒
| 文件系统 | readdir 性能 |
|---|---|
| ext4 | 良好(常规推荐) |
| xfs | 大目录表现优秀 |
| btrfs | 中等,随机写多时下降 |
| tmpfs | 极快(内存文件系统) |
| NFS | 受网络影响大,慢 |
✅ 大目录场景推荐:XFS
readdir 已使用 getdents64O_DIRECTORYopenatfdopendir性能在现代 Debian 上不是系统问题,而是使用方式问题
readdir 整个大目录正确做法:
readdir 做排序readdir 不保证顺序readdir✅ 使用方式优化:
openat + fdopendirstat 尽量少✅ 架构优化:
a/, b/)Debian 上
readdir性能很好,但只适用于“合理大小的目录”;大目录是设计问题,不是系统问题。
如果你有具体场景(比如:目录文件数、文件系统、用途),我可以给你更精确的建议或 benchmark 方法。