是否有用于压缩结构化消息的库?(像protobufs)
我正在寻找比仅仅通过GZip传递序列化的流更好的东西。例如,如果我的消息存储了一个三角形网格,则相邻顶点的坐标将高度相关,因此智能压缩器可以存储增量而不是原始坐标,这将需要更少的位进行编码。
而一般的压缩器,对流结构一无所知,会寻找重复的字节序列,而在这样的数据中,不会有很多字节序列。
理想情况下,在提供模式后,这应该完全自动工作,但我不介意在模式中添加注释,如果到了那个地步。
发布于 2019-11-07 18:18:57
这里的主要问题是,在大多数情况下,编写某种模式所需的工作量与为数据编写预处理器的工作量相似。例如,对于您的三角形网格示例,重新排序数据或在坐标上执行增量可以非常容易地实现,并将很好地支持任何后续的压缩器。
在这个方向上运行的压缩器是ZPAQ。它可以使用为特定数据量身定做的配置文件( sample configuration site包括EXE、JPG、BMP配置以及一个专门的配置来压缩包含数学常数pi的文件)。缺点是这里使用的脚本语言(ZPAQL)使用起来相当复杂,而且您必须了解许多ZPAQ的内部结构。
较早版本的WinRAR使用了一个名为RarVM的虚拟机(虽然现在已被弃用),它允许使用类似汇编程序的代码进行自定义数据转换,在GitHub上有一个带有一些相关工具的open source project named rarvmtools。
对于protobuf压缩,有一个Google project called riegeli可以进一步压缩它们。
https://stackoverflow.com/questions/58740146
复制相似问题