还记得最初到公司的时候thrift序列化还是用的JSON模式,现在想想效率还是太低了。先上结论部分
结论
Thrift提供了(至少)三种序列化方法,Json、Binary和Compact,三者之间性能差距还是比较大的。Json方式的选取往往不是基于效率的选择,下面是两种二进制模式Binary和Compact之间的比较:
- 序列化:compact模式压缩节省19.3%的空间,耗时节省20.4%
- 反序列化:compact模式耗时增加3.3%
| 方法 | 长度 | 耗时 | |
|---|---|---|---|
| 序列化 | binary | 26039 | 16.433 |
| compact | 21020 | 13.085 | |
| json | 25096 | 56.137 | |
| 反序列化 | binary | 8.963 | |
| compact | 9.257 | ||
| json | 61.511 |
测试用例
- thrift定义
struct STestObject{
1: i64 userId;
2: i64 timestamp;
3: list<string> apps;
4: list<i32> pos;
}