不過今天又意外發現了 pbzip2
pbzip2 和 lbzip2 一樣也是一個多執行緒的壓縮軟體
既然是一樣的東西不給他來個分出高下怎行
今天的三位主角分別是 bzip2, lbzip2 以及 pbzip2
bzip2 版本為 1.0.5-6,是在 Squeeze 底下透過 apt-get install bzip2 安裝的
lbzip2 版本為 0.23-1,也是在 Squeeze 底下透過 apt-get install lbzip2 安裝的
pbzip2 版本為 1.1.3,是透過以下步驟自行編譯安裝而成
- 代碼: 選擇全部
# cd /dev/shm
# apt-get install libbz2-dev
# wget http://www.compression.ca/pbzip2/pbzip2-1.1.3.tar.gz
# tar zxvf pbzip2-1.1.3.tar.gz ; cd pbzip2-1.1.3
# make && make install
接下來當然要實際測試一下壓縮效率啦
本次的測試資料是 Linux Kernel 2.6.38.4
解壓縮後大小約為 482 MB
測試過程會在 RamDisk (/dev/shm) 上進行
以減少硬碟傳輸速度對本次測試的影響
並儘可能關閉任何會使用 CPU TIME 的程序
另外硬體平台是 Intel E2140 + 2G RAM
首先是壓縮測試
1. bzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I bzip2 -cf ./DL/Kernel.UseBzip2 linux-2.6.38.4/
real 1m49.839s
user 1m49.643s
sys 0m1.076s
花了 109.839 秒
2. lbzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I lbzip2 -cf ./DL/Kernel.UseLBzip2 linux-2.6.38.4/
real 1m5.846s
user 2m4.360s
sys 0m3.728s
花了 65.846 秒,比 bzip2 快了約 66.8%
3. pbzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I pbzip2 -cf ./DL/Kernel.UsePBzip2 linux-2.6.38.4/
real 1m8.698s
user 2m5.832s
sys 0m3.704s
花了 68.698 秒,比 bzip2 快了約 59.9%
在檔案大小方面其實都差不多
用單執行緒 bzip2 壓好的會小一咪咪咪咪咪...
[jiunyu:/dev/shm/DL] $ /bin/ls -l
total 292940
-rw-r--r-- 1 jiunyu jiunyu 74752680 Apr 22 13:46 Kernel.UseBzip2
-rw-r--r-- 1 jiunyu jiunyu 75044267 Apr 22 13:49 Kernel.UseLBzip2
-rw-r--r-- 1 jiunyu jiunyu 75041369 Apr 22 14:05 Kernel.UsePBzip2
-rw-r--r-- 1 jiunyu jiunyu 74809587 Apr 22 13:14 linux-2.6.38.4.tar.bz2
然後是解壓縮測試
1. bzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I bzip2 -xf ./DL/linux-2.6.38.4.tar.bz2
real 0m30.428s
user 0m30.262s
sys 0m2.024s
花了 30.428 秒
2. lbzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I lbzip2 -xf ./DL/linux-2.6.38.4.tar.bz2
real 0m21.732s
user 0m38.090s
sys 0m2.920s
花了 21.732 秒,比 bzip2 快了約 40%
3. pbzip2
- 代碼: 選擇全部
[jiunyu:/dev/shm] $ time tar -I pbzip2 -xf ./DL/linux-2.6.38.4.tar.bz2
real 0m29.357s
user 0m29.334s
sys 0m1.648s
花了 29.357 秒,比 bzip2 快了約 3.6%
結論:
壓縮速度: lbzip2>pbzip2>>bzip2
解壓縮速度: lbzip2>>pbzip2>bzip2
壓縮後檔案大小: bzip2<pbzip2<lbzip2
原本以為 pbzip2 比較新應該會比較好 (Released on Mar 27, 2011 )
結果並沒有
而且還在解壓縮項目大輸 lbzip2
我有用 top 觀察 pbzip2 在解壓縮時的 CPU Usage
其間只有一個核心是處於滿載狀態
另一個使用率大約只有 10%
也難怪解壓縮會慘敗給 lbzip2
最後建議 CPU 是多核心或單核心+HT的朋友使用 lbzip2 來進行(解)壓縮
速度真的快蠻多的
至於單核心的朋友使用 bzip2 就可以了
因為一個執行緒就可以讓你的 CPU 全速衝刺囉~