在我的应用程序中,我需要存储和传输包含许多重复字符串值的数据(想想 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 方法,因为它很容易实现。然后,如果它满足您的速度/压缩要求,您就完成了,可以继续使用下一个功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top