哪种压缩算法更适合压缩协议缓冲区输出?

时间:2012-02-01 16:05:21

标签: compression protocol-buffers

假设:

  • 仅包含数字统计信息的数据库表
  • 表的二进制转储 - 记录后的记录
  • 协议缓冲表的转储 - 使用从表模式创建的proto模式

正如我所料,协议缓冲区产生的二进制转储小于同一个表的朴素二进制转储:

PS Z:\dev\internal\vedtool> dir net_endshapes_stat.data | % { "$($_.Name): $($_.Length)B" }
net_endshapes_stat.data: 2941331B
net_endshapes_stat.data: 4311042B

然而,当我使用Ultra level和LZMA方法用7z压缩两个文件时,我发现较大的文件压缩得更好:

PS Z:\dev\internal\vedtool> dir net_endshapes_stat.7z | % { "$($_.Name): $($_.Length)B" }
net_endshapes_stat.7z: 1206186B
net_endshapes_stat.7z: 1055901B

现在,我知道它完全没问题,我仍然想知道是否有更好的压缩算法可以在协议缓冲区输出上执行。

修改

这是proto架构:

message net_endshapes_stat {
  optional fixed32 timestamp = 1;
  optional sint32 shape_id = 2;
  optional sint64 bps_in = 3;
  optional sint64 bps_out = 4;
  optional sint64 total_in = 5;
  optional sint64 total_out = 6;
}

0 个答案:

没有答案