字符串表编码与gzip压缩

时间:2009-09-12 16:54:31

标签: c++ algorithm compression gzip

在我的应用程序中,我需要存储和传输包含许多重复字符串值的数据(想想XML文档中的实体名称)。我有两个建议的解决方案:

  • A)创建一个要沿文档存储的字符串表,然后在文档正文中使用索引引用(使用多字节编码),或者
  • B)只需使用gzip或类似的压缩算法压缩文档。

哪一个在速度和数据大小方面可能会表现更好? (显然,这取决于实现的质量,但假设选项A动态地构建字符串数组并以合理的方式对文档主体进行编码)。

此外,如果选项B,您是否建议使用除gzip之外的更合适的压缩方法?

3 个答案:

答案 0 :(得分:2)

简单地使用gzip肯定是最简单的,也可能是足够的。我建议尝试使用字符串表,然后再压缩它,看看你是否比单独使用gzip获得更好的压缩效果。

答案 1 :(得分:1)

这将取决于你帖子中没有解决的很多事情。

为什么不首先尝试使用zip方法,因为它易于实现。然后,如果它符合您的速度/压缩要求,您就可以继续使用下一个功能。

答案 2 :(得分:1)

当传输/存储成本与CPU时间成本相比不太高时,gzip只是一个很好的算法。您可以使用bzip2,7zip获得更好的压缩率,特别是自然语言,各种PPM算法。

当然,重要的不仅是计算(和静态与动态内存需求)与压缩比的关系 - 不同的压缩格式允许不同程度的有效随机访问搜索,低延迟流解码和压缩数据的连接(例如cat a.gz b.gz | gunzip -cgunzip -c a.gz;gunzip -c b.gz

相同