微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以使用针对具有重复内容的多个文件进行优化的压缩器/数据结构?

如何解决是否可以使用针对具有重复内容的多个文件进行优化的压缩器/数据结构?

我对压缩算法的内部原理知之甚少,但据我所知,大多数情况下,压缩器在有重复字符(对于文本文件)时效果更好。

我有一个需求,我们想要处理大量的中到大型文本文件(最大大小约为 200Mb),一般情况下会小得多,尽管说 1-20Mb, 可能还需要搜索数千个此类文件

我正在寻找一种方法

  1. 提出一种磁盘数据结构,允许以密集的方式存储这些文件内容。 (文件系统/文件夹结构/备用文件类型什么都可以)。

这个,我相信对搜索也有帮助。

  1. 使用压缩算法压缩这些文件,该算法考虑了文件间的大量内容重复,预计大多数文件包含相同的内容(每个文件来自不同的机器所以无法防止源代码中的重复)。

解决方法

最简单的方法是使用 tar 和 xz 来制作 .tar.xz 存档,对 xz 使用高压缩选项。

这对您的应用程序的作用首先是跨文件压缩,因为 tar 有效地连接了文件(它们之间有一个小标题),然后 xz 将结果视为单个流。

其次,xz 查找与其窗口大小一样的匹配数据,查找匹配的字节序列。高压缩选项将允许 xz 进一步回顾,跨两个或更多,也许更多,你的文件。以下是 xz 预设选项:

                 Preset   DictSize   CompCPU   CompMem   DecMem
                   -0     256 KiB       0        3 MiB    1 MiB
                   -1       1 MiB       1        9 MiB    2 MiB
                   -2       2 MiB       2       17 MiB    3 MiB
                   -3       4 MiB       3       32 MiB    5 MiB
                   -4       4 MiB       4       48 MiB    5 MiB
                   -5       8 MiB       5       94 MiB    9 MiB
                   -6       8 MiB       6       94 MiB    9 MiB
                   -7      16 MiB       6      186 MiB   17 MiB
                   -8      32 MiB       6      370 MiB   33 MiB
                   -9      64 MiB       6      674 MiB   65 MiB

因此,-9 最多可回溯到 64 MB,涵盖几个或几个典型的 1-20 MB 文件大小。它无法查看 200 MB 的文件。

更高级的选项可以指定更大的窗口,高达 1.5 GB。虽然这会在压缩时消耗几 GB 的 RAM,因此请谨慎使用以保持合理的性能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。