假设:
正如我所料,协议缓冲区产生的二进制转储小于同一个表的朴素二进制转储:
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;
}