还记得最初到公司的时候thrift序列化还是用的JSON模式,现在想想效率还是太低了。先上结论部分

结论

Thrift提供了(至少)三种序列化方法,Json、Binary和Compact,三者之间性能差距还是比较大的。Json方式的选取往往不是基于效率的选择,下面是两种二进制模式Binary和Compact之间的比较:

  1. 序列化:compact模式压缩节省19.3%的空间,耗时节省20.4%
  2. 反序列化:compact模式耗时增加3.3%
方法 长度 耗时
序列化 binary 26039 16.433
compact 21020 13.085
json 25096 56.137
反序列化 binary 8.963
compact 9.257
json 61.511

测试用例

  1. thrift定义
    struct STestObject{
    1: i64 userId;
    2: i64 timestamp;
    3: list<string> apps;
    4: list<i32> pos;
    }