压缩算法性能对比

看一个压缩算法的优劣,有两个重要的指标:一个指标是压缩比,原先占 100 份空间的东西经压缩之后变成了占 20 份空间,那么压缩比就是 5,显然压缩比越高越好;另一个指标就是压缩 / 解压缩吞吐量,比如每秒能压缩或解压缩多少 MB 的数据。同样地,吞吐量也是越高越好。

 

压缩算法性能对比_第1张图片

从表中我们可以发现 zstd 算法有着最高的压缩比,而在吞吐量上的表现只能说中规中矩。

反观 LZ4 算法,它在吞吐量方面则是毫无疑问的执牛耳者。

 

GZIP、Snappy、LZ4 甚至是 zstd 的表现各有千秋。

但对于 Kafka 而言,它们的性能测试结果却出奇得一致,即在吞吐量方面:LZ4 > Snappy > zstd 和 GZIP

而在压缩比方面,zstd > LZ4 > GZIP > Snappy 如果网络不好且 CPU 资源够的话,建议使用 zstd 压缩

 

具体到物理资源,使用 Snappy 算法占用的网络带宽最多,zstd 最少,这是合理的,毕竟 zstd 就是要提供超高的压缩比;

在 CPU 使用率方面,各个算法表现得差不多,只是在压缩时 Snappy 算法使用的 CPU 较多一些,而在解压缩时 GZIP 算法则可能使用更多的 CPU

 

 

 

原文引用:

zstd git lab : https://github.com/facebook/zstd

Kafka核心技术与实战 - 胡夕

 

你可能感兴趣的:(Kafka,算法)