天天看點

bzip2、pbzip2壓縮工具比較

[個人GitHub]中會有更多新鮮剛出爐的文章。

Linux版本:Debian8.5

pbzip2安裝:

apt-get install pbzip2

pbzip2詳情請見:pbzip2的安裝與使用

bzip2(單線程壓縮工具)

# 壓縮單個檔案測試
# 單個檔案大小
root@wing:/data # du -h 2016.sql
G    .sql
# tar bzip2 壓縮指令
time tar -jcf .sql.bz2 .sql
# 單個檔案壓縮時間
real    m7.s
user    m4.s
sys 0m13.s
# 壓縮後檔案大小
root@wing:/data # du -sh 2016.sql.bz2
M    .sql.bz2

# 壓縮目錄測試
# 目錄檔案大小
root@wing:/data # du -sh 20161122/
G    /
# tar bzip 隻能使用一個核進行壓縮
time tar -jcvf bzip.bz2 /*
# 目錄壓縮時間
real    m3.s
user    m51.s
sys 0m23.s
# 壓縮後檔案大小
root@wing:/data # du -h 20161122.bz2
M    .bz2
           

pbzip2(多線程壓縮工具)

# 壓縮單個檔案測試
# 單個檔案大小
root@wing:/data # du -h 2016.sql
G    .sql
# pbzip2壓縮指令
time pbzip2 -p3 -k .sql 
# 單個檔案壓縮時間
real    m22.s
user    m55.092s
sys 0m16.s
# 壓縮後檔案大小
root@wing:/data # du -sh 2016.pbzip.bz2
M    .pbzip.bz2

# 壓縮目錄測試
# 目錄檔案大小
root@wing:/data # du -sh 20161122/
G    /
# tar bzip pbzip 使用3個核進行壓縮
time tar -c  | pbzip2 -p3 -c > .tar.bz2
# 目錄壓縮時間
real    m31.s
user    m5.s
sys 0m42.s
# 壓縮後檔案大小
root@wing:/data # du -h 20161122.tar.bz2
M    .tar.bz2
           

總結:

bzip pbzip(3個線程)
原檔案大小 3.4G
檔案壓縮時間( real) 10m7.996s
檔案壓縮大小 220M
原目錄大小 6.9G
目錄壓縮時間(real) 24m30.013s
目錄壓縮大小 356M

注意:壓縮時間使用real計算,而不使用user+sys計算的原因是,多線程下user的時間是每個線程時間之和,與我們可以感覺到的時間偏差較大,是以選擇real,該伺服器上都是初始化的job,是以real更接近使用者感覺的時間。

從上面表格可以得出,pbzip2開啟3個線程壓縮的前提下,無論是壓縮單個檔案還是壓縮目錄,時間上比單線程bzip2壓縮快了接近3倍,而壓縮比也基本相同。

繼續閱讀