LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1763|回复: 12

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

[复制链接]
发表于 2010-3-29 20:42:04 | 显示全部楼层 |阅读模式
我使用某次上课的实验报告作为测试:

[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]

压缩耗时:
[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]

解压耗时:
[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


[/php]

结论: 7z 和 xz 的压缩比都比gzip高很多,而 xz 则比 7z 多花了一倍时间来压缩。。。 7z 则是多花了一倍时间来解压缩。。。
发表于 2010-3-29 21:17:23 | 显示全部楼层
$ time tar cvfJ a.tar.xz  计算机网络实验报告及配置代码/

how about this?
回复 支持 反对

使用道具 举报

发表于 2010-3-29 21:18:26 | 显示全部楼层
不同文件的压缩比是不一样的
你试试拿一段mkv视频来试试
回复 支持 反对

使用道具 举报

发表于 2010-3-29 21:21:49 | 显示全部楼层
[color="Red"]这么比冇意义,且有失公平。
7z 不保留文件权限。
公平起见,应比较 xz 7z 压缩、解压缩 同一个单个文件。

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

使用道具 举报

发表于 2010-3-29 21:26:45 | 显示全部楼层
还是 2 楼仔细。
3 楼有些开玩笑,mkv 本就是高压缩比的东东,继续压缩不变大就算好的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-29 22:32:46 | 显示全部楼层
4楼的正解。

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

使用道具 举报

发表于 2010-3-29 22:56:31 | 显示全部楼层
兄弟们呀,多看看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/ ... 08858/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
回复 支持 反对

使用道具 举报

发表于 2010-3-29 23:20:26 | 显示全部楼层
呵呵,多谢楼上提示。

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

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

使用道具 举报

发表于 2010-3-29 23:34:09 | 显示全部楼层
7-Zip and p7zip 9 betas 已支持 xz 格式,7z 这回又是全能的。
据 7 楼给的链接
http://sourceforge.net/projects/ ... 08858/topic/3515437
回复 支持 反对

使用道具 举报

发表于 2010-3-30 08:40:02 | 显示全部楼层
xz 可以直接压缩多文件(夹)么?
tar之后再压缩,在windows下解压缩中文会乱码。
gz无论tar不tar都乱码
tar之后无论7z bz2 xz解压缩后中文均乱码。
7z bz2都可以直接压缩多个文件(夹)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表