【问题标题】:How to minify a large finite collection of strings?如何缩小大量有限的字符串集合?
【发布时间】:2021-08-24 13:00:22
【问题描述】:

我正在内存中创建一个 Trie。每个节点包含一个词。它的性能非常好。但问题是内存消耗。

6GB 大!我用 protobuf 对其进行了序列化,并将其写入了一个大小为 150MB 的文件。

JSON 为 250MB。我希望是否有办法缩小字符串?例如:

如您所见,第一列中有重复项。此外,它应该是可逆的。

所有属性/列都是字符串。

假设表格被转换为:

我认为这会节省很多空间。当然,我可以通过先将每个单元格插入字典中然后为其分配一个整数来做到这一点,但我不想重新发明轮子,除非我必须这样做。

【问题讨论】:

  • 你如何测量内存中的单个对象为 6GB,但写入 json 时只有 250MB?可以提供minimal reproducible example 的型号代码吗?
  • 听起来你想compress the strings...
  • @gunr2171 我没有。我确信那里还有其他构成 6GB 的对象。但我知道这是一次大规模的尝试。如果我必须优化任何地方的空间,我会从那里开始。我没有分享代码示例的原因是因为这样就好像将多个问题合并为一个问题。现在我正在寻找一种轻松有效地压缩/缩小字符串的方法
  • @HereticMonkey 我正在尝试这个,因为我正在输入这个。但我认为这不会有太大帮助,因为每个单元格不会有很多重复的字符,但会有很多单元格具有相同的值。例如:第一列一半单元格中的“ABCD”。
  • @HereticMonkey 不,它增加了 4 倍的大小。我正在寻找可以压缩字符串但输出仍然是字符串的东西。

标签: c# asp.net .net asp.net-core


【解决方案1】:

您想要做的想法是首先创建一个字典,然后将实际值更改为字典键(会更小)。

这种方法用于 Zip 和其他压缩算法。

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2022-07-08
    • 2017-11-27
    相关资源
    最近更新 更多