数据序列化方式比较

经过网上资料查证以及自身实际测试,对比了一下几种序列化方式:java序列化、json、avro、kryo、protobuff、protostuff,对5144条6KB左右数据进行测试结果

序列化工具

序列化时间(ms)

反序列化时间(ms)

平均每条记录大小(byte)

java序列化

225

238

6324

json

6831

4629

21444

avro

434

509

5995

kryo

171

76

5998

Protobuff

62

43

6005

Protostuff

52

50

6005

从上述表格可以得出,除json外,其他序列化工具序列化后数据大小差距不大,但序列化/反序列化耗时上protobuff/protostuff有明显优势。故序列化框架在protobuff和protostuff中进行选择。

Protostuff是基于Google protobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuff提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程,可以直接使用普通java POJO进行序列化,简化编码。

经过实测序列化性能相对原生protpbuff没有影响。

由于Protostuff只支持Java实现,不过并未对序列化格式有做任何修改,所以Protostuff和protobuff可以共同使用。

posted on 2017-02-09 20:52  聂政didi  阅读(310)  评论(0编辑  收藏  举报

导航