我有100'000个1kb文件。一个读取它们的程序 - 它真的很慢。 我提高性能的最佳想法是将它们放在ramdisk上。 但这是一个脆弱的解决方案,每次重启都需要再次设置ramdisk。 (文件复制速度也很慢)
我的第二个最好的想法是连接文件并使用它。但这并非无足轻重。
有更好的解决方案吗?
注意:我需要避免程序中的依赖,甚至是Boost。
答案 0 :(得分:2)
您可以通过将文件存储在磁盘上来进行优化。
在具有充足空闲空间的磁盘上,最简单的方法是读取tar存档。
除此之外,还有/曾经是'readahead'的debian软件包。
您可以使用该工具
然后,您可以使用该文件列表调用readahead(它将按磁盘顺序对文件进行排序,以便最大化吞吐量并最小化搜索时间)
不幸的是,自从我使用这些产品已经有一段时间了,所以我希望你可以谷歌到解决方案
这就是我现在似乎发现的:
sudo apt-get install readahead-fedora
祝你好运
答案 1 :(得分:1)
如果您的文件是静态的,我同意将它们放在一起,然后将其放在RAM磁盘中。可能更快直接从TAR文件中读取,但您可以测试它。
编辑:: 而不是TAR,您也可以尝试创建squashfs卷。
如果您不想这样做,或者仍然需要更多表现,那么: