我已经知道gzip多年了,最近我看到bzip被用于工作。它们基本上是等价的,还是其中一个对另一个有重大的利弊?
我已经知道gzip多年了,最近我看到bzip被用于工作。它们基本上是等价的,还是其中一个对另一个有重大的利弊?
Answers:
Gzip和bzip2功能相同。(曾经有一个bzip,但它似乎完全消失了世界的面貌。)其他常见的压缩格式是zip,rar和7z; 这三者同时进行压缩和归档(将多个文件打包成一个)。以下是速度,可用性和典型压缩比方面的一些典型评级(请注意,这些评级在某种程度上是主观的,不要将它们视为福音):
decompression speed (fast > slow): gzip, zip > 7z > rar > bzip2
compression speed (fast > slow): gzip, zip > bzip2 > 7z > rar
compression ratio (better > worse): 7z > rar, bzip2 > gzip > zip
availability (unix): gzip > bzip2 > zip > 7z > rar
availability (windows): zip > rar > 7z > gzip, bzip2
正如你所看到的,没有一个明显的赢家。如果你想依赖可能已经安装的程序,请在Windows上使用zip(或者如果可能的话,使用自解压档案,因为Windows不附带任何这些),并在unix上使用gzip。如果您想要最大压缩,请使用7z。
Rar也有缺点,据我所知,没有免费软件可以创建rar档案或者可以解压缩所有rar档案。其他格式有免费实施,没有(严重)专利权利要求。
bzip
消失了,因为它使用的是专利的算法编码。由于该专利,它被重新设计为使用霍夫曼编码。在此重新设计期间,添加了新功能和改进。然而,Burrows-Wheeler变换在两个版本中保持相同的基本因素使它成为一种独特的压缩算法。
据我所知,gzip总体上更快,而bzip整体产生更好(更小)的压缩。
算法具有不同的时间,内存,空间权衡。请记住,这些算法已经写了很长一段时间,而且你的智能手机的CPU比当时的台式机多了很多倍。
您的选择是在普遍性(.gz)和更多压缩(.bz2)之间。只有你可以说你更关心哪个。
.gz的一个优点是它可以压缩流,这是一个你无法看到后面的序列。这使它成为http流的官方压缩器。因此我需要使用gzip一次,但你不太可能需要考虑它。
以下是测试压缩算法的网站列表,要找到bzip和gzip,你将不得不进行一些挖掘,但大多数网站都会列出算法的特征。这样你就可以比较对你来说重要的东西,大小(压缩比),时间,内存,cpu。
http://www.maximumcompression.com/benchmarks/benchmarks.php
根据我的经验,bzip提供了比gzip更好的压缩率。加上7zip作为管理器和bzip算法,7zip可以使用多核处理器。
根据http://tukaani.org/lzma/benchmarks.html,gzip压缩速度是bzip2的两倍,并且解压缩速度提高了十倍。
例如,对于s3缓存,travis等,你想要压缩/解压缩的速度,而不仅仅是小尺寸,gzip可能是一个很好的权衡。