字符串表编码与 gzip 压缩

发布于 2024-08-04 18:27:37 字数 293 浏览 1 评论 0原文

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

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

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

另外,如果选择 B,您是否推荐除 gzip 之外更可能合适的压缩方法?

In my application, I need to store and transmit data that contains many repeating string values (think entity names in an XML document). I have two proposed solutions:

  • A) create a string table to be stored along the document, and then use index references (using multi-byte encoding) in the document body, or
  • B) simply compress the document using gzip or a similar compression algorithm.

Which one is likely going to perform better in terms of speed and data size? (Obviously, this depends on the quality of the implementations, but assume that option A builds an array of strings dynamically and encodes the document body in some reasonable fashion).

Also, if option B, do you recommend a more potentially suitable compression method other than gzip?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不会写诗 2024-08-11 18:27:37

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

Simply using gzip would definitely be the easiest and probably sufficient. I'd recommend trying the string table and then gzipping that to see if you get slightly better compression than with gzip alone.

风柔一江水 2024-08-11 18:27:37

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

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

gzip is only a good algorithm when the transmission/storage cost is not too high compared to the cost of CPU time. You can get better compression ratios with bzip2, 7zip, and especialy for natural language, various PPM algorithms.

Of course, it's not only computation (and static vs. dynamic memory requirement) vs. compression ratio that matters - different compression formats allow varying degrees of efficient random access seeking, low latency stream decoding, and concatenation of zipped data (e.g. cat a.gz b.gz | gunzip -c is the same as gunzip -c a.gz;gunzip -c b.gz

表情可笑 2024-08-11 18:27:37

这将取决于您的帖子中未解决的许多问题。

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

It's going to depend on a lot of things that aren't addressed in your post.

Why don't you try the zip method first as it's easy to implement. Then if it meets your speed/compression requirements you're done and can move on to the next feature.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文