玩命加载中 . . .

bzip2 vs pbzip2 性能对比


概述

近期使用esrally进行Elastic Search性能压测,使用script产生了原始数据,这些原始数据需要被压缩成bz2格式,如果原文件大小很大,压缩起来就非常耗时。本文介绍几种bzip2压缩操作,观察耗时情况。

准备测试数据

准备10万笔记录,看看压缩耗时如何:

root@node244:/mnt/disk/esrally_data/test# time wc -l documents-2.json 
100000 documents-2.json

real	0m0.025s
user	0m0.005s
sys	0m0.020s
root@node244:/mnt/disk/esrally_data/test# cat documents-2.json | head -n 1
{"name": "08_9837907241.49", "bucket": "bucket01", "instance": "null", "meta": {"custom-string": {"name": "1597699173358823", "value": "5714268441146127"}, "mtime": "2020-05-26T19:21:32.598Z", "etag": "e7b647f4a3959de9c7a070e5d3093ab1", "content_type": "application/octet-stream", "tail_tag": "a3a5cefd-376d-421b-3110-08b41412e7c1.4520.862976", "size": "760"}, "owner": {"display_name": "user01", "id": "user01"}, "versioned_epoch": "0"}
root@node244:/mnt/disk/esrally_data/test# 

压缩验证

使用默认的bzip2压缩指令

root@node244:/mnt/disk/esrally_data/test# time bzip2 -k documents-2.json documents-2.json.bz2
bzip2: Input file documents-2.json.bz2 already has .bz2 suffix.

real	0m8.482s
user	0m8.454s
sys	0m0.028s
root@node244:/mnt/disk/esrally_data/test# ll
total 47444
drwxr-xr-x 2 root root     4096 Jun  2 16:01 ./
drwxr-xr-x 5 root root     4096 Jun  2 15:55 ../
-rw-r--r-- 1 root root 43800000 Jun  2 15:55 documents-2.json
-rw-r--r-- 1 root root  4769476 Jun  2 15:55 documents-2.json.bz2
root@node244:/mnt/disk/esrally_data/test# 

bzip2 使用 -1 参数

root@node244:/mnt/disk/esrally_data/test# time bzip2 -k -1 documents-2.json documents-2.json.bz2
bzip2: Input file documents-2.json.bz2 already has .bz2 suffix.

real	0m5.411s
user	0m5.390s
sys	0m0.020s
root@node244:/mnt/disk/esrally_data/test# ll
total 48020
drwxr-xr-x 2 root root     4096 Jun  2 16:03 ./
drwxr-xr-x 5 root root     4096 Jun  2 15:55 ../
-rw-r--r-- 1 root root 43800000 Jun  2 15:55 documents-2.json
-rw-r--r-- 1 root root  5357900 Jun  2 15:55 documents-2.json.bz2
root@node244:/mnt/disk/esrally_data/test# 

bzip2 使用 -9 参数

root@node244:/mnt/disk/esrally_data/test# time bzip2 -k -9 documents-2.json documents-2.json.bz2
bzip2: Input file documents-2.json.bz2 already has .bz2 suffix.

real	0m8.053s
user	0m8.049s
sys	0m0.004s
root@node244:/mnt/disk/esrally_data/test#
root@node244:/mnt/disk/esrally_data/test# ll
total 47444
drwxr-xr-x 2 root root     4096 Jun  2 16:10 ./
drwxr-xr-x 5 root root     4096 Jun  2 15:55 ../
-rw-r--r-- 1 root root 43800000 Jun  2 15:55 documents-2.json
-rw-r--r-- 1 root root  4769476 Jun  2 15:55 documents-2.json.bz2

pbzip2

root@node244:/mnt/disk/esrally_data/test# time pbzip2 documents-2.json -z -k -1 -f  > documents-2.json.bz2

real	0m0.449s
user	0m9.834s
sys	0m0.096s
root@node244:/mnt/disk/esrally_data/test# ll
total 48028
drwxr-xr-x 2 root root     4096 Jun  2 16:09 ./
drwxr-xr-x 5 root root     4096 Jun  2 15:55 ../
-rw-r--r-- 1 root root 43800000 Jun  2 15:55 documents-2.json
-rw-r--r-- 1 root root  5366033 Jun  2 15:55 documents-2.json.bz2
root@node244:/mnt/disk/esrally_data/test# 

根据pbzip2的help信息,这里没有携带-p参数,默认会自己根据当前硬件CPU核数,计算使用多少路并发,默认32

bzip2 vs pbzip2性能对比

使用 Compression Level -9, 压缩比率最大,但耗时会比 -1 要久,此选项是默认选项;

使用pzip2进行压缩,多并发情况下,压缩耗时明显要比bzip2 -1 要快。

孰优孰略,一目了然。

BTW,由于pbzip2只能压缩文件,不能对目录进行压缩,所以如果想使用pbzip2压缩目录,则需要借助tar工具。


文章作者: Gavin Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gavin Wang !
  目录