为什么gzip比Windows 2012中的压缩文件更好?



我有一个4.7 Gb的文件,我想存储和移动它。它位于Windows 2012服务器上。

当我使用高级文件选项"压缩以节省磁盘空间"时,操作系统能够将其减少到3.013 GB,约为原始大小的64%。当它在服务器上时,这是很好的。

我必须移动它,所以我使用了我(90年代)最喜欢的压缩工具gzip,它被压缩到2.294 Gb,约为原始大小的48.7%。

:
为什么90年代的"gzip"能够生成占用windows 2012压缩的75%的文件?这是关于"开放时间"吗?这是一个地方,开放源代码的性能能力不存在于闭源?到底发生了什么事?

他们在做不同的事情。

NTFS压缩必须支持随机访问,包括读取和将数据写入压缩文件的中间或开头,其中

a)可能不像之前的数据那样可压缩(所以所有后来的数据都必须移动)

b)将使用于压缩文件其余部分的字典无效(因此需要全部重写)

使用GZIP还意味着,如果您希望读取文件的最后十个字节,则必须首先解压缩整个文件,以使压缩字典进入正确的状态。

因此,NTFS将文件压缩成更小的块,并且不利用文件中相隔较远的部分之间的相似性来增加压缩。

我不知道内部是什么,但我愿意打赌Windows和GZip都使用相同的Deflate压缩算法。https://en.wikipedia.org/wiki/DEFLATE

我认为这是解释差异的原因:

  1. Deflate具有0-9的压缩设置,其中0表示不压缩,9表示最佳压缩。两者之间的所有值都在速度与压缩之间进行权衡。当windows压缩你的驱动器时,它可能是使用他们确定的设置,当你需要打开文件时,在速度方面是一个很好的权衡。

  2. 我知道你说你是在单个文件上操作,但是当人们问这个问题时,通常是因为GZip在单个文件上操作。这就是为什么它通常与焦油混合使用。压缩单个文件总是比单独压缩多个文件(如.zip)有优势。

最新更新