File 是否可以使用压缩器/数据结构来优化具有重复内容的多个文件?
我对压缩算法的内部结构了解不多,但据我所知,大多数情况下,当存在重复字符(对于文本文件)时,压缩器的性能会更好 我有一个要求,我们希望处理大量的中到大型文本文件(最大大小约为200Mb),一般情况下会小得多,比如说1-20Mb, 可能还需要搜索数千个这样的文件 我在寻找一种方法:File 是否可以使用压缩器/数据结构来优化具有重复内容的多个文件?,file,data-structures,dataset,compression,File,Data Structures,Dataset,Compression,我对压缩算法的内部结构了解不多,但据我所知,大多数情况下,当存在重复字符(对于文本文件)时,压缩器的性能会更好 我有一个要求,我们希望处理大量的中到大型文本文件(最大大小约为200Mb),一般情况下会小得多,比如说1-20Mb, 可能还需要搜索数千个这样的文件 我在寻找一种方法: 提出一种磁盘数据结构,允许以密集方式存储这些文件的内容。(文件系统/文件夹结构/备用文件类型一切正常) 我相信这也会有助于搜索 使用压缩算法压缩这些文件,该算法考虑到文件之间重复的大量内容,大多数文件预计包含相同的内容
最简单的方法是使用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
将回溯到64MB,覆盖一些或几个1-20MB的典型文件大小。它将无法查看200 MB的文件
更高级的选项可以指定更大的窗口,最大可达1.5 GB。虽然压缩时会占用数GB的RAM,但请小心使用,以保持性能合理