+ -
当前位置:首页 → 问答吧 → 压缩比一样,xz却比7z慢一倍?!

压缩比一样,xz却比7z慢一倍?!

时间:2010-03-30

来源:互联网

我使用某次上课的实验报告作为测试:

PHP 代码:
$ du -sh 计算机网络实验报告及配置代码/
174M    计算机网络实验报告及配置代码/

$ uname -a
Linux laptop 2.6.32-ice #1 SMP PREEMPT Wed Feb 24 21:36:54 CST 2010 x86_64 Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz GenuineIntel GNU/Linux 
压缩耗时:
PHP 代码:
$ time tar cvfz a.tar.gz  计算机网络实验报告及配置代码/
 ...
real    0m11.923s
user    0m11.489s
sys     0m0.163s


$ time 7z a a.7z 计算机网络实验报告及配置代码/
 ...
real    1m8.797s
user    1m45.263s
sys     0m0.897s

$ time tar cvJf a2.tar.xz 计算机网络实验报告及配置代码/
 ...
real    1m57.899s
user    1m55.096s
sys     0m0.433s

$ ls -al a.*
-rw-r--r-- 1 tale tale 57M 2010-03-29 20:28 a.7z
-rw-r--r-- 1 tale tale 57M 2010-03-29 20:21 a.tar.xz
-rw-r--r-- 1 tale tale 72M 2010-03-29 20:33 a.tar.gz 
解压耗时:
PHP 代码:
$ time tar xf a.tar.gz

real    0m2.418s
user    0m2.147s
sys     0m0.093s

$ time tar xf a.tar.xz
real    0m4.626s
user    0m4.406s
sys     0m0.087s

$ time 7z x a.7z
 ...
real    0m8.546s
user    0m7.140s
sys     0m0.310s 
结论: 7z 和 xz 的压缩比都比gzip高很多,而 xz 则比 7z 多花了一倍时间来压缩。。。 7z 则是多花了一倍时间来解压缩。。。

作者: dickeny   发布时间: 2010-03-30

$ time tar cvfJ a.tar.xz 计算机网络实验报告及配置代码/

how about this?

作者: kevinlei   发布时间: 2010-03-30

不同文件的压缩比是不一样的
你试试拿一段mkv视频来试试

作者: Havanna   发布时间: 2010-03-30

这么比冇意义,且有失公平。
7z 不保留文件权限。
公平起见,应比较 xz 7z 压缩、解压缩 同一个单个文件。

xz 使用 LZMA2,7z 使用 LZMA,同一个作者。
LZMA2 相对 LZMA,压缩时间稍长,压缩比稍小,解压快。
http://www.linuxsir.org/bbs/thread350973.html

作者: 聚焦深空   发布时间: 2010-03-30

还是 2 楼仔细。
3 楼有些开玩笑,mkv 本就是高压缩比的东东,继续压缩不变大就算好的。

作者: 聚焦深空   发布时间: 2010-03-30

4楼的正解。

不过我觉得 7z 作为个人用户打包存档文件还是很适合的。毕竟压缩/解压只有一次,而且通常希望压缩的时间能够快一些。。。
PS:我才知道原来这两个压缩工具的算法都是LZMU系列啊。。。

作者: dickeny   发布时间: 2010-03-30

兄弟们呀,多看看man好不好。xz压缩比7z慢,最大问题在于xz不支持多线程,而7z是支持的。man xz里提了支持多线程的参数:
引用:
-T threads, --threads=threads
Specify the maximum number of worker threads to use. The default is the number of available CPU cores.
但后面的才是关键:
引用:
Multithreaded compression and decompression are not implemented yet, so this option has no effect for now.
据xz作者说,XZ Utils 5.0.0发布后,加入多线程支持将是开发重点:
http://sourceforge.net/projects/lzma.../topic/3515437

man 7z也给出了在linux下备份的例子:
引用:
On Linux/Unix, in order to backup directories you must use tar :
- to backup a directory : tar cf - directory | 7za a -si directory.tar.7z
- to restore your backup : 7za x -so directory.tar.7z | tar xf -
虽然少了权限,可自行加个参数p不就好了:tar cfp - directory | 7za a -si directory.tar.7z

聚焦深空兄,7z和xz好象不是一个作者:7z的作者是Igor Pavlov,打开下面链接,点击网页上的:[quote]7-Zip by ipavlov[/quote]可看到;
http://sourceforge.net/projects/sevenzip/

xz的作者是:Lasse Collin(IRC昵称: Larhzu,他在sf论坛上也是这个ID)
http://tukaani.org/about.html

作者: zwgun   发布时间: 2010-03-30

呵呵,多谢楼上提示。

人家前面说的是 LZMA2 LZMA 同一个作者。有歧义,抱歉。

现在,用 tar 还指明使用 p 参数非常多余,尤其是有 root 权限时。

作者: 聚焦深空   发布时间: 2010-03-30

7-Zip and p7zip 9 betas 已支持 xz 格式,7z 这回又是全能的。
据 7 楼给的链接
http://sourceforge.net/projects/lzma.../topic/3515437

作者: 聚焦深空   发布时间: 2010-03-30

xz 可以直接压缩多文件(夹)么?
tar之后再压缩,在windows下解压缩中文会乱码。
gz无论tar不tar都乱码
tar之后无论7z bz2 xz解压缩后中文均乱码。
7z bz2都可以直接压缩多个文件(夹)

作者: omegao   发布时间: 2010-03-30

还有个lzip的,也是使用lzma算法。 linux下注定会百家争鸣的局面。

作者: ibear   发布时间: 2010-03-30

说着说着就将压缩软件与格式混淆了~

作者: bhoppi   发布时间: 2010-03-30

引用:
作者: ibear
还有个lzip的,也是使用lzma算法。 linux下注定会百家争鸣的局面。
lzip 有些生不逢时,暂时只有它自己的几个包用 *.tar.lz 格式发布。
lzma utils/xz utils 早已广泛应用,*.tar.lzma *.tar.xz 格式文件越来越常见。

作者: 聚焦深空   发布时间: 2010-03-30