作者:多米音乐_34053121 | 来源:互联网 | 2023-09-13 10:00
zstdv1.4.7已发布,官方特别推荐升级到此版本,因为1.4.7在性能、修复错误以及增加新功能方面均有不小的改进。zstd(Zstandard)是由Facebook开源的快速无损压缩算法,主要应用于zlib级别的实时压缩场景,
zstd v1.4.7 已发布,官方特别推荐升级到此版本,因为 1.4.7 在性能、修复错误以及增加新功能方面均有不小的改进。zstd (Zstandard) 是由 Facebook 开源的快速无损压缩算法,主要应用于 zlib 级别的实时压缩场景,并且具有更好的压缩比。zstd 还可以以压缩速度为代价提供更强的压缩比,速度与压缩权衡可通过小增量进行配置。
P.S:文章发布时,Facebook 发布了针对 1.4.7 的热修复更新,版本也升级到了 1.4.8,修复了关于内部缓存的问题,详情点此查看。
改进--long
模式
--long
模式用于在合理的时间和内存预算内分析大量数据,--long
模式算法运行在正则表达式匹配器上,两者均对压缩结果产生影响。不过这两个阶段独立运行,因此导致在高级别的压缩水平下出现细微差异。所以无法在默认情况下一直启用--long
模式。
新版本修复了此问题,对于压缩级别为 16 以上的压缩,开启--long
模式的压缩性能始终比关闭--long
模式好。
提升解压小文件块的速度
此版本对解压小文件块的速度进行了优化,具体的提升根据文件块的大小有所不同,如下表所示:
Block Size |
Decompression Speed Improvement |
1 KB |
~+30% |
2 KB |
~+30% |
4 KB |
~+25% |
8 KB |
~+15% |
16 KB |
~+10% |
32 KB |
~+5% |
共享线程池 (Shared Thread Pool)
这是一项试验性功能。
默认情况下,每个压缩上下文可以设置为使用最大可用的线程。但在复杂情况下,可能会有多个压缩上下文并行工作,每个上下文都会使用部分线程。在这种场景中,可能需要控制所有这些压缩上下文使用的线程总数。
1.4.7 新增的共享线程池功能支持让所有这些压缩上下文共享同一个线程池,添加ZSTD_CCtx_refThreadPool()
参数即可使用。
提升字典压缩速度 (Dictionary Compression)
此版本引入了新的实验性字典压缩算法,适用于中档压缩级别,采用了ZSTD_greedy
, ZSTD_lazy
和ZSTD_lazy2
等策略。新算法可以在ZSTD_CDict
创建过程中通过选择压缩参数ZSTD_c_enableDedicatedDictSearch
来触发。
下面的基准测试显示了新算法带来的显著压缩速度提升:
Level |
Hot Dict |
Cold Dict |
5 |
~+17% |
~+30% |
6 |
~+12% |
~+45% |
7 |
~+13% |
~+40% |
8 |
~+16% |
~+50% |
9 |
~+19% |
~+65% |
10 |
~+24% |
~+70% |
详情查看
https://github.com/facebook/zstd/releases/tag/v1.4.7
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们