我有 100'000 个 1kb 文件。还有一个读取它们的程序 - 它真的很慢。我提高性能的最佳想法是将它们放在 ramdisk 上。但这是一个脆弱的解决方案,每次重启都需要重新设置 ramdisk。(文件复制也很慢)
我的第二个最佳想法是连接文件并使用它。但这不是微不足道的。
有更好的解决方案吗?
注意:我需要避免程序中的依赖,甚至是 Boost。
我有 100'000 个 1kb 文件。还有一个读取它们的程序 - 它真的很慢。我提高性能的最佳想法是将它们放在 ramdisk 上。但这是一个脆弱的解决方案,每次重启都需要重新设置 ramdisk。(文件复制也很慢)
我的第二个最佳想法是连接文件并使用它。但这不是微不足道的。
有更好的解决方案吗?
注意:我需要避免程序中的依赖,甚至是 Boost。
您可以通过将文件连续存储在磁盘上来进行优化。
在有足够可用空间的磁盘上,最简单的方法是改为读取 tar 存档。
除此之外,还有/曾经有一个用于“预读”的 debian 包。
您可以使用该工具
然后,您可以使用该文件列表调用 readahead(它将按磁盘顺序对文件进行排序,以便最大化吞吐量并最小化查找时间)
不幸的是,我已经有一段时间没有使用这些了,所以我希望你可以谷歌搜索相应的包
这就是我现在似乎发现的:
sudo apt-get install readahead-fedora
祝你好运
If your files are static, I agree just tar them up and then place that in a RAM disk. Probably be faster to read directly out of the TAR file, but you can test that.
edit:: instead of TAR, you could also try creating a squashfs volume.
If you don't want to do that, or still need more performance then: