我正在寻找从磁盘读取顺序文件的最快方法。
我在一些帖子中读到,如果我使用 lz4 等压缩文件,我可以获得比读取平面文件更好的性能,因为我将最大限度地减少 i/o 操作。
但是当我尝试这种方法时,扫描 lz4 压缩文件的性能比扫描平面文件差。我没有尝试上面的lz4demo,但是找了一下,我的代码很相似。
我发现了这个基准:http://skipperkongen.dk/2012/02/28/uncompressed-versus-compressed-read/ http://skipperkongen.dk/2012/02/28/uncompressed-versus-compressed-read/
http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c?r=75 http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c?r=75
与未压缩的文件相比,真的有可能提高读取压缩的顺序文件的性能吗?我究竟做错了什么?
是的,可以通过使用压缩来改善磁盘读取。
如果您使用多线程读取器,则最有可能发生这种效果:当一个线程从磁盘读取压缩数据时,另一个线程解码内存中的前一个压缩块。
考虑到 LZ4 的速度,解码操作很可能在另一个线程完成读取下一个块之前完成。这样,您将获得与测试文件的压缩比成比例的带宽改进。
显然,基准测试时还需要考虑其他影响。例如,HDD的寻道时间比SSD大几个数量级,在恶劣的情况下,它可以成为时序的主导部分,将任何带宽优势降低为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)