Linux下几种常见压缩方式测试对比

Linux下几种常见压缩方式测试对比

😄 Written by Zak Zhu

参考

简介

  1. gzip

    GZIP默认压缩级别: 6

    GZIP最早有Jean-loup GaillyMark Adler创建, 用于UNIX系统的文件压缩.现今已经成为Internet上使用非常普遍的一种数据压缩格式

    HTTP协议上GZIP编码是一种用来改进WEB应用程序性能的技术. 大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度. 这一般是指WWW服务器中安装的一个功能, 当有人来访问这个服务器中的网站时, 服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来. 一般对纯文本内容可压缩到原大小的40%. 这样传输就快了, 效果就是你点击网址后会很快的显示出来. 当然这也会增加服务器的负载.

  2. bzip2

    BZIP2默认压缩级别: 9

    BZIP2是一个基于Burrows-Wheeler变换的无损压缩工具, 能够把普通的数据文件压缩10%至15%

    优点:

    1. 能够高效完成文件数据的压缩. 这样你就可以把硬盘中冗余繁多的文件, 打包压缩整理. 在网络上传送文件前, 可以先用bzip2打包压缩文件, 以减少传送时间, 提高效率.
    2. 开源免费
    3. 支持修复介质错误. 当你需要从包含了一些错误数据的备份磁盘上修复或者获得含有错误数据的压缩文件中的数据时, bzip2仍能完美的解压出没有被破坏的部分
    4. 轻量级工具. 它可以运行在任何含有ANSI C编译器的32位或者64位的主机上
  3. xz

    Compression default is 6.

    Decompressor memory usage into account before using 7 - 9 !

    XZ Utils is free general-purpose data compression software with a high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.

    The core of the XZ Utils compression code is base on LZMA SDK, but it has been modified quite a lot to be suitable for XZ Utils. The primary compression algorithm is currently LZMA2, which is used inside the .xz container format. With typical files, XZ Utils create 30% smaller output than gzip and 15% smaller output than bzip2

测试

测试文件: ASCII text, 1888888888(1.8G)

  1. 比较压缩时间
压缩级别 gzip (s) bzip2 (s) xz (s)
1 21.4739179611 90.9501368999 68.3621289730
2 24.4609007835 89.7782618999 112.869837999
3 37.0476579666 90.6774659157 209.155833006
4 27.8122198582 87.3756139278 806.507110119
5 46.4609379768 92.8639438152 1033.03790808
6 69.8921849728 97.9297192097 1058.06829500
7 86.8752598763 98.1326341629 1137.82143497
8 122.764060020 99.1380150318 1258.49577117
9 158.335731030 99.2219679356 1333.39344907

**测试结果: **

  1. 默认压缩级别情况下, 压缩时间: gzip (69s) < bzip2 (99s) < xz (1058s)

  2. gzip从压缩级别4开始, 压缩时间明显增长

    • bzip2压缩级别1 - 5, 压缩时间相差不大 (90s左右),
    • 6 - 9级别压缩时间相差不大 (98s左右)

    • xz压缩级别1 - 9, 压缩时间呈递增趋势 (68 to 1333s).

    • 压缩级别1, 压缩时间和gzip -6差不多 (68s左右), 且比bzip2压缩时间小, 除此之外, xz压缩时间最长


  1. 比较压缩大小

    压缩级别 gzip (Byte) bzip2 (Byte) xz (Byte)
    1 506841552 (484M) 233216612 (223M) 75684736 (73M)
    2 502290692 (480M) 251739184 (241M) 41313244 (40M)
    3 490092139 (468M) 253543594 (242M) 44591692 (43M)
    4 474926100 (453M) 248566089 (238M) 33962656 (33M)
    5 475325349 (454M) 250965048 (240M) 44159936 (43M)
    6 484074122 (462M) 250394024 (239M) 45095856 (44M)
    7 484203655 (462M) 246139644 (235M) 45095856 (44M)
    8 486381873 (464M) 243782904 (233M) 45095856 (44M)
    9 486428743 (464M) 248720308 (238M) 45095856 (44M)

    **测试结果: **

    1. 默认压缩级别情况下, 压缩大小: gzip (462M) > bzip2 (238M) > xz (44M)

    2. gzip压缩级别4和5发而压缩后文件最小

      • bzip2压缩级别1 - 9, 压缩后文件相差不大(238M左右),
      • 压缩级别1反而最小 (223M)

      • xz压缩级别1, 压缩后文件较大(73M),
      • 压缩级别4, 压缩后文件反而最小(33M).
      • 其他压缩级别, 压缩后文件相差不大(44M左右)

  1. 比较解压时间

    压缩级别 gzip (s) bzip2 (s) xz (s)
    1 12.9578359127 30.1166489124 13.7505700588
    2 11.8433420658 32.1003379822 11.4533679485
    3 11.7258040905 33.6896038055 12.3551590443
    4 9.99360084534 36.7211699486 11.7451989651
    5 9.72496008873 36.5580499172 13.2683560848
    6 9.68840789795 34.4556078911 12.3216309547
    7 9.15504908562 36.9242160320 12.6404900551
    8 9.19544315338 38.0099401474 12.1256840229
    9 9.78331804276 36.1473388672 12.9020321369

    **测试结果: **

    1. 默认压缩级别情况下, 解压时间: gzip (9s) < xz (12s) < bzip2 (36s)
    2. gzip压缩级别1 - 9的文件, 解压时间相差不大 (10s左右)
      • bzip2压缩级别4 - 9的文件, 解压时间相差不大 (36s左右),
      • 压缩级别1的文件解压时间最小 (30s)
    3. xz压缩级别1 - 9的文件, 解压时间相差不大 (12s左右)

总结

对于运维而言, 压缩工具常用来备份文件. 下面所总结的也是针对备份功能.

  1. 压缩和解压过程都会占用较大的CPU, 所以建议在业务低峰和机器空闲的时候执行压缩(比如说计划任务00:00后备份), 解压的话也在业务低峰和机器空闲的时候操作
  2. gzip适用于快速压缩和快速解压的场景, 所以如果备份的话, 还是选择其他压缩
  3. 根据我的测试结果, bzip2如果用来备份文件的话, 建议用压缩级别1
  4. 备份文件的场景, xz最具有优势, 压缩后文件最小, 解压时间很快, 建议用默认压缩级别

欢迎各位讨论和建议

😄 Oh Yeah!

posted @ 2019-10-07 23:15  ZakZhu  阅读(8031)  评论(0编辑  收藏  举报