字符串表编码对比gzip压缩
-
06-07-2019 - |
题
在我的应用程序中,我需要存储和传输包含许多重复字符串值的数据(想想 XML 文档中的实体名称)。我有两个建议的解决方案:
- A)创建一个要沿着文档存储的字符串表,然后在文档正文中使用索引引用(使用多字节编码),或者
- B) 使用 gzip 或类似的压缩算法简单地压缩文档。
哪一个在速度和数据大小方面可能表现更好?(显然,这取决于实现的质量,但假设选项 A 动态构建字符串数组并以某种合理的方式对文档正文进行编码)。
另外,如果选择 B,您是否推荐除 gzip 之外更可能合适的压缩方法?
解决方案
仅当传输/存储成本与 CPU 时间成本相比不太高时,gzip 才是一个好的算法。您可以使用 bzip2、7zip 获得更好的压缩比,特别是对于自然语言、各种 生产计划管理 算法。
当然,这不仅仅是计算(以及静态与动态)。动态内存要求)与压缩比很重要 - 不同的压缩格式允许不同程度的高效随机访问搜索、低延迟流解码以及压缩数据的串联(例如 cat a.gz b.gz | gunzip -c
是相同的 gunzip -c a.gz;gunzip -c b.gz
其他提示
简单地使用 gzip 肯定是最简单的,而且可能就足够了。我建议尝试使用字符串表,然后对其进行 gzip 压缩,看看是否比单独使用 gzip 获得更好的压缩效果。
这将取决于您的帖子中未解决的许多问题。
为什么不先尝试 zip 方法,因为它很容易实现。然后,如果它满足您的速度/压缩要求,您就完成了,可以继续使用下一个功能。
不隶属于 StackOverflow