【问题标题】:String table encoding vs. gzip compression字符串表编码与 gzip 压缩
【发布时间】:2009-09-12 16:54:31
【问题描述】:

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

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

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

另外,如果是选项 B,您是否推荐一种比 gzip 更合适的压缩方法?

【问题讨论】:

    标签: c++ algorithm compression gzip


    【解决方案1】:

    简单地使用 gzip 肯定是最简单的,而且可能就足够了。我建议尝试使用字符串表,然后对其进行 gzip 压缩,看看是否比单独使用 gzip 获得更好的压缩。

    【讨论】:

      【解决方案2】:

      gzip 只有在传输/存储成本与 CPU 时间成本相比不太高的情况下才是一个好的算法。您可以使用 bzip2、7zip 获得更好的压缩率,尤其是自然语言,各种PPM 算法。

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

      【讨论】:

        【解决方案3】:

        这将取决于您的帖子中未提及的许多事情。

        为什么不先尝试一下 zip 方法,因为它很容易实现。然后,如果它满足您的速度/压缩要求,您就完成了,可以继续下一个功能。

        【讨论】:

          猜你喜欢
          • 2011-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 1970-01-01
          • 2021-11-30
          • 1970-01-01
          相关资源
          最近更新 更多