【问题标题】:Good string compression algorithms/approaches for list of small strings?小字符串列表的良好字符串压缩算法/方法?
【发布时间】:2018-03-15 13:51:10
【问题描述】:

我有一个小字符串列表,我想快速压缩它们。这样做的好方法是什么?除了大约 1300 万个长度为 5 到 30 个字符的字符串之外,这些字符串没有任何其他属性。

更新:来自 cmets,这些是通过网络发送的,用于连接,所以我不知道具体的属性,顺序无关紧要,我是批量发送的。

【问题讨论】:

  • 什么字符串?小写英文单词?混合情况?随机字母数字字符?随机 8 位字节?
  • 看看Huffman Encoding
  • 如果它们真的没有任何其他属性,那么它们是完全随机的,没有任何作用。如果它们至少有一些非随机性,那么可能像 gzip 这样的快速通用压缩器会找到其中的大部分。您也不会说您是否关心字符串的顺序;如果你不这样做,你也许可以通过良好的排序节省更多空间(例如,字典至少倾向于将具有相同前缀的字符串放在一起)。
  • 如果您没有任何需要压缩表单的操作,您可以通过删除它们来半瞬时将它们压缩到 内存占用:说明压缩的内容表格应该是有用的。在处理之前不知道输入数据的属性(幸运的是)与缺乏这些属性不同。
  • 不要评论 cmets 要求更多信息或澄清:编辑您的问题。特别是对于send them over a networkbulk decompress[decompressed] order doesn't matter 等基本信息。

标签: string algorithm compression data-compression


【解决方案1】:

从您的 cmets 中,您不需要能够解压缩个人 small string
在使用您最容易使用的标准压缩/解压缩方法之前对字符串进行排序应该会有很长的路要走。
测量效果差异,欢迎举报!

as compressed as possible 与任何“优化”一样都是危险的。
修复一个预先目标,以及一种区分不存在足够好的方法em>,一旦实现就继续前进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多