压缩算法的比较

作者: 泽林呗 | 来源:发表于2017-08-22 16:12 被阅读0次
    各算法压缩行数与压缩比例的比较
    声明

    压缩对象是一个大小为1.7M的csv文件,总共6829行,每行74列,即一行大小为261byte
    使用全Double类型(一个Double为8字节)保存一行数据的话,一行为592byte
    使用更适合的数据类型时(-125-124用Byte保存,浮点型用Float保存,其余用short保存,各别较大的整数用int保存),一行为143byte

    以下图分别是使用Double类型时的压缩算法各项比较
    各算法压缩行数与压缩比例的比较
    image.png

    由上图可知当压缩行数为40行时,bzip压缩比例达到11,gzip压缩比例达到9

    压缩算法比较图3.png

    由上图知,当压缩行数为150时,gzip压缩比例为10并收敛,而bzip压缩比例在行数为500时达到18(行数为1000时压缩比例为20,此处不画出)

    各算法压缩行数与压缩时间的比较
    压缩时间比较.png

    由上图知,除bzip外,其余算法压缩时间变化不大,且远下于bzip,bzip算法随着压缩行数增加,压缩时间减少但仍然高于gzip

    各算法压缩行数与压缩性价比(性价比:压缩时间/压缩比例),性价比越低越好
    压缩性价比.png 压缩性价比图2.png

    根据数据以及以上两图,gzip的压缩性价比最好,bzip随着压缩行数增加,性价比提高,但仍比gzip差

    通过上面比较可知,

    压缩能力Bzip > Gzip ≈ Snappy ≈ Lz4 ≈ Lzo
    耗费时间 Bzip > Gzip ≈ Snappy ≈ Lz4 ≈ Lzo
    压缩性价比 Gzip > Snappy ≈Lz4 ≈ Lzo >Bzip

    使用更好的数据类型再进行一次比较(只比较Snappy、Bzip、Gzip)

    压缩行数与压缩比例的比较
    更好数据类型压缩算法(比例).png

    由上图可知,bzip压缩比例最好,在500行时达到5(不会再变化),gzip次之,在30行时达到3并收敛

    压缩行数与压缩时间
    更好数据类型压缩时间.png

    由上图可知,bzip压缩耗时最多,并随着压缩行数增加而减少,但仍高于gzip

    压缩行数与压缩性价比
    更好数据类型性价比.png

    由上图可知,gzip与snappy压缩性价比相近,而bzip压缩性价比在行数达到150时接近bzip并收敛

    总结,当使用Double类型时,因为许多孔空间是浪费或者重复的,所以压缩比例可以达到很高,其中gzip压缩性价比最好,但bzip可达到20的比例

    当使用更好的数据类型时,压缩比例教差,其中gzip压缩性价比最好,但bzip随着行数增加,压缩性价比也会提高

    相关文章

      网友评论

        本文标题:压缩算法的比较

        本文链接:https://www.haomeiwen.com/subject/hzyldxtx.html