点击下方“民工哥技术之路”,选择“设为星标”
回复“”获取独家整理的学习资料!
工具介绍主要介绍zstd工具的作用和性能测试
我们称Zstandard或Zstd是一种快速的无损压缩算法,是针对zlib级别的实时压缩方案,以及更好的压缩比。它由一个非常快的熵阶段,由Huff0和FSE库提供。这个项目是作为开源的BSD许可收费的库,以及一个生成和解码.zst格式。
性能测试对比Zstd还可以压缩速度为代价提供更强的压缩比,SpeedvsRtrade可以通过小增量进行配置。在所有设置中,解压速度保持不变,并在所有LZ压缩算法(比如zlib或者lzma)共享的属性中保持不变。
以前的压缩方式,都是适用于典型文件和二进制的压缩方案(MB/GB)的情况。然而,要压缩的数据量越小,压缩就越困难。这是所有压缩算法都存在的问题,原因是压缩算法从过去的数据中学习如何压缩未来的数据。但是在一个新的数据集的开始,没有“过去”可以参考。
为了解决这种情况,Zstd提供了一种新的训练模式,可以使用这种模式对所选数据类型的算法进行调优。训练Zstandard是通过提供一些样本(每个样本一个文件)来实现的,训练的结果存储在称为“字典”的文件中,该文件必须在压缩和解压缩之前加载。使用此字典,可以在小数据上实现的压缩率大大提高。
以下示例,使用由github公共API创建的github用户示例集。它由大约10K条记录组成,每条记录1KB左右。
小数据压缩的案例如果在一组小的数据样本中存在某种相关性,那么训练就是有效的。一个字典的数据越具体,它的效率就越高(没有通用字典)。因此,为每种类型的数据部署一个字典将带来最大的好处。字典增益在前几个KB中最有效。然后,压缩算法将逐步使用先前解码的内容,以更好地压缩文件的其余部分。
字典压缩使用示例#训练字典$zstd--trainFullPathToTrainingSet/*-odictionaryName#用字典压缩$zstd-DdictionaryNameFILE#用字典解压缩$zstd-DdictionaryName--de