我有一些随机文本大小= 27 GB的文件,压缩后它变为40 MB左右。

压缩后,一个3.5 GB SQL文件变为45 MB。

但是,压缩后109 MB文本文件变为72 MB,因此可能出了什么问题。

为什么压缩得那么少,必须10 MB左右,否则我缺少一些东西。

我看到的所有文件都是仅英文文本和一些语法符号(/,。-= + etc)

为什么?

如果没有,您可以说出如何超级压缩文本文件?

我可以在PHP中编码NP。

有帮助吗?

解决方案

文件的压缩比取决于其内容。

大多数压缩算法通过将重复的数据转换为单个重复,指定重复多少次来工作。

例如,包含字母的文件 a 1,000,000次被压缩的远远超过具有完全随机内容的文件。

有关更多信息,请提供更多信息。

其他提示

这样想...如果您有一个包含的文件:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

该文件本质上只是存储 abc times 18

另一方面,此文件:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

只能存储:

abcdefghijklmnopqrstuvwxyz times 2

因此,即使首先要短的文件,第二个文件也比第一个文件更大。

压缩通过删除输入数据中的重复作用来起作用。压缩后,您的3.5GB文件变得越来越少,因为它具有大量的重复数据,而您的较小文件并未压缩那么多,因为它不包含那么多重复的数据。

如果您想了解压缩的工作原理是最拉动的公用事业,请看一下Wikipedia的 Lempel-Ziv-Welch 文章,这是构建这些算法大多数的算法。

PHP可能是这样一个项目的错误选择,因为该语言的速度将非常慢,而C中的C中已经是PHP本身的一部分,它的现有库非常慢。

通常,压缩级别取决于算法在文件中可以找到的相似性和模式。如果所有文件都包含英文文本,则数字很奇怪。我强烈怀疑具有极端压缩比的文件包含大量重复文本段的大部分。

压缩可以通过删除数据中的冗余来起作用。确定的起点可能是 霍夫曼编码 这是直接解决问题的首批开创性作品之一,但您可能会介意进一步挖掘香农的原始作品 信息理论.

这些不是新概念 - 当人们有兴趣在非常有限的渠道上有效传输数据时,他们首先在1940年代和50年代引起了重大兴趣。该主题不仅对计算都感兴趣 - 与熵和其他基本物理学有一些非常深的联系。例如,事实证明,完美的压缩数据与白噪声没有区别。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top