我有一个包含500,000个文件的目录.我想尽快访问它们.该算法要求我重复打开和关闭它们(不能同时打开500,000个文件).
我怎样才能有效地做到这一点?我原本以为我可以缓存inode并以这种方式打开文件,但是*nix没有提供通过inode打开文件的方法(安全性或其他一些方法).
另一个选择是不要担心它,并希望FS在文件查找目录中做得很好.如果这是最好的选择,哪个FS最好.某些文件名模式是否比其他文件模式更快?例如01234.txt vs foo.txt
顺便说一句,这完全在Linux上.
假设您的文件系统是ext3,如果启用了dir_index,则您的目录将使用散列B树进行索引.这将为您提供与您在应用程序中编码的任何内容一样多的提升.
如果目录已编制索引,则文件命名方案无关紧要.
http://lonesysadmin.net/2007/08/17/use-dir_index-for-your-new-ext3-filesystems/
一些想法:
a)如果可以控制目录布局,则将文件放入子目录中.
b)如果你不能移动文件,那么你可能会尝试不同的文件系统,我认为xfs可能适用于有大量条目的目录?