【发布时间】:2010-09-23 13:07:14
【问题描述】:
我有一个包含 500,000 个文件的目录。我想尽快访问它们。该算法需要我反复打开和关闭它们(不能同时打开 500,000 个文件)。
我怎样才能有效地做到这一点?我原本以为我可以缓存 inode 并以这种方式打开文件,但 *nix 并没有提供通过 inode 打开文件的方法(安全或类似的)。
另一种选择是不要担心它,并希望 FS 在目录中查找文件时做得很好。如果这是最好的选择,那么哪个 FS 效果最好。某些文件名模式是否比其他文件名模式查找得更快?例如 01234.txt 与 foo.txt
顺便说一句,这一切都在 Linux 上。
【问题讨论】:
-
我在 ext3 上有一个带有 dir_index 的目录,其中包含 100.000 个文件。如果我知道文件名,几乎没有时间损失。如果我在目录上执行“ls”,则需要 3 分钟。之后,所有内容都保留在缓存中,并且在此目录中的操作完全没有时间损失。
标签: c++ linux file-io filesystems inode