Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compression gzip压缩例外?_Compression_Gzip - Fatal编程技术网

Compression gzip压缩例外?

Compression gzip压缩例外?,compression,gzip,Compression,Gzip,有没有办法预测在任意字符串上使用gzip会得到什么样的压缩结果?哪些因素导致了最坏和最好的情况?我不确定gzip是如何工作的,但例如一个字符串,如: "fffffff" 与以下内容相比,可能会压缩得很好: "abcdefg" 我从哪里开始 感谢gzip使用,粗略地描述,它通过用指向字符串第一个实例的指针替换重复的字符串来压缩文件。因此,高度重复的数据压缩得非常好,而纯粹的随机数据压缩得非常少(如果有的话) 通过演示: [chris@polaris ~]$ dd if=/dev/urandom

有没有办法预测在任意字符串上使用gzip会得到什么样的压缩结果?哪些因素导致了最坏和最好的情况?我不确定gzip是如何工作的,但例如一个字符串,如:

"fffffff"
与以下内容相比,可能会压缩得很好:

"abcdefg"
我从哪里开始

感谢

gzip使用,粗略地描述,它通过用指向字符串第一个实例的指针替换重复的字符串来压缩文件。因此,高度重复的数据压缩得非常好,而纯粹的随机数据压缩得非常少(如果有的话)

通过演示:

[chris@polaris ~]$ dd if=/dev/urandom of=random bs=1048576 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.296325 s, 3.5 MB/s
[chris@polaris ~]$ ll random
-rw-rw-r-- 1 chris chris 1048576 2010-08-30 16:12 random
[chris@polaris ~]$ gzip random
[chris@polaris ~]$ ll random.gz
-rw-rw-r-- 1 chris chris 1048761 2010-08-30 16:12 random.gz

[chris@polaris ~]$ dd if=/dev/zero of=ordered bs=1048576 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00476905 s, 220 MB/s
[chris@polaris ~]$ ll ordered
-rw-rw-r-- 1 chris chris 1048576 2010-08-30 16:12 ordered
[chris@polaris ~]$ gzip ordered
[chris@polaris ~]$ ll ordered.gz
-rw-rw-r-- 1 chris chris 1059 2010-08-30 16:12 ordered.gz

由于开销的原因,我的纯随机数据样本实际上变大了,而我的满是零的文件压缩到了以前大小的0.1%。

gzip使用的算法被调用

它结合了两种流行的压缩技术:重复字符串消除和位缩减。这两个都在文章中进行了解释

基本上,根据经验,当某些字符比大多数其他字符更经常使用时和/或当字符经常连续重复时,可以说压缩效果最好。当字符在输入中均匀分布并且每次都改变时,压缩效果最差


这方面也有测量方法,比如数据的完整性。

还有更多,因此“粗略描述”。)