字符串表编码与 gzip 压缩
Posted
技术标签:
【中文标题】字符串表编码与 gzip 压缩【英文标题】:String table encoding vs. gzip compression 【发布时间】:2009-09-12 16:54:31 【问题描述】:在我的应用程序中,我需要存储和传输包含许多重复字符串值的数据(想想 XML 文档中的实体名称)。我有两个建议的解决方案:
A) 创建一个字符串表存储在文档中,然后在文档正文中使用索引引用(使用多字节编码),或者 B) 只需使用 gzip 或类似的压缩算法压缩文档。在速度和数据大小方面,哪一个可能会表现得更好? (显然,这取决于实现的质量,但假设选项 A 动态构建字符串数组并以某种合理的方式对文档正文进行编码)。
另外,如果是选项 B,您是否推荐一种比 gzip 更合适的压缩方法?
【问题讨论】:
【参考方案1】:简单地使用 gzip 肯定是最简单的,而且可能就足够了。我建议尝试使用字符串表,然后对其进行 gzip 压缩,看看是否比单独使用 gzip 获得更好的压缩。
【讨论】:
【参考方案2】:gzip 只有在传输/存储成本与 CPU 时间成本相比不太高的情况下才是一个好的算法。您可以使用 bzip2、7zip 获得更好的压缩率,尤其是自然语言,各种PPM 算法。
当然,重要的不仅仅是计算(以及静态与动态内存要求)与压缩比 - 不同的压缩格式允许不同程度的有效随机访问搜索、低延迟流解码和压缩数据的串联(例如cat a.gz b.gz | gunzip -c
与gunzip -c a.gz;gunzip -c b.gz
相同
【讨论】:
【参考方案3】:这将取决于您的帖子中未提及的许多事情。
为什么不先尝试一下 zip 方法,因为它很容易实现。然后,如果它满足您的速度/压缩要求,您就完成了,可以继续下一个功能。
【讨论】:
以上是关于字符串表编码与 gzip 压缩的主要内容,如果未能解决你的问题,请参考以下文章