Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103667208
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-03 13:55:59

修改自:

Linux 下用得最普遍的两种压缩文件格式就是 .gz 和 .bz2 了,分别由 gzip 和 bzip2 命令创建。

说到压缩文件,除了压缩率之外,压缩和解压的速度也很关键,在创建或解压比较大的压缩文件时,如果时间过久,也挺郁闷的……

虽然多核 CPU 在这两年已经大面积普及了,但是标准的 gzip 和 bzip2 程序在压缩和解压的时候,只能用到 CPU 的其中一个核心,如果全部核心同时开动,一定可以大大加速压缩和解压的过程,于是,gzip 和 bzip2 的多核版: 和 就横空出世了~

mgzip 可以在压缩的时候充分利用多核,pbzip2 在压缩和解压的时候都可以充分利用多核。用 mgzip 压缩的压缩包,也可以通过标准的 gunzip 解压。pbzip2 只有在解压 pbzip2 创建的压缩文件时,才能利用多核。

mgzip 和 pbzip2 的用法和原来基本相同,只有一点小的差别,比如 mgzip 没有 --recursive 参数。

当然,为了获得多核速度上的提升,压缩文件也要记录一些额外的信息,导致文件要比标准的 gzip 和 bzip2 压缩后的文件要大一些,mgzip 和 gzip 的压缩结果就差不少,相比之下,pbzip2 和 bzip2 之间的差异要小很多,完全可以忽略:

$ bunzip2 linux-2.6.23.tar.bz2
$ gzip -c  linux-2.6.23.tar > linux-2.6.23.tar.gzip
$ mgzip -c linux-2.6.23.tar > linux-2.6.23.tar.mgzip
$ ls -lh
-rw-r----- 1 ben ben 253M 2008-01-19 18:55 linux-2.6.23.tar
-rw-rw-r-- 1 ben ben  56M 2008-01-19 18:57 linux-2.6.23.tar.gzip
-rw-rw-r-- 1 ben ben  67M 2008-01-19 18:57 linux-2.6.23.tar.mgzip

$ gunzip -c linux-2.6.23.tar.mgzip > linux-2.6.23.tar.mgzip-gunzip
$ md5sum linux-2.6.23.tar.mgzip-gunzip linux-2.6.23.tar
853c87de6fe51e57a0b10eb4dbb12113  linux-2.6.23.tar.mgzip-gunzip
853c87de6fe51e57a0b10eb4dbb12113  linux-2.6.23.tar

$ bzip2  -c -k -9 linux-2.6.23.tar > linux-2.6.23.tar.bzip2
$ pbzip2 -c -k -9 linux-2.6.23.tar > linux-2.6.23.tar.pbzip2

$ ls -lh
-rw-r----- 1 ben ben 253M 2008-01-19 18:55 linux-2.6.23.tar
-rw-rw-r-- 1 ben ben  56M 2008-01-19 18:57 linux-2.6.23.tar.gzip
-rw-rw-r-- 1 ben ben  67M 2008-01-19 18:57 linux-2.6.23.tar.mgzip
-rw-rw-r-- 1 ben ben  44M 2008-01-19 19:03 linux-2.6.23.tar.bzip2
-rw-rw-r-- 1 ben ben  44M 2008-01-19 19:01 linux-2.6.23.tar.pbzip2

$ ls -l
-rw-r----- 1 ben ben 264704000 2008-01-19 18:55 linux-2.6.23.tar
-rw-rw-r-- 1 ben ben  45488158 2008-01-19 19:03 linux-2.6.23.tar.bzip2
-rw-rw-r-- 1 ben ben  57928789 2008-01-19 18:57 linux-2.6.23.tar.gzip
-rw-rw-r-- 1 ben ben  69968799 2008-01-19 18:57 linux-2.6.23.tar.mgzip
-rw-rw-r-- 1 ben ben  45695449 2008-01-19 19:01 linux-2.6.23.tar.pbzip2

不过,pbzip2 有个缺点,就是不能从标准输入来获取数据,所以要想作出一个 .tar.pbzip2 的文件,得先创建一个 .tar 文件才行,不过相信再今后的版本中,肯定能实现这个功能。

家里的电脑连超线程都不是,没法测试了,偷懒拿来现成的测试结果图( CPU 为 四核 Q6600 2.4G,测试文件为 linux-2.6.23 内核源代码包 ) :

可以看出,在高压缩比的情况下,多核版和单核版的压缩文件结果差异会变小,并且不管压缩比是大是小,多核版都能大幅度提高压缩的时间 ( 四核情况下,快了 3 倍 )~

同样,解压缩的时间也大幅缩短:

阅读(503) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~