序列化和反序列化测试

467 阅读1分钟

测试工具

两个测试工具,支持sofa-hessian

  • java-json-benchmark
    • 需要在不同分枝中,分枝如下:
    • master:原始的json
    • hessian:hessian
    • sofa-hessian:sofa-hessian
    • 上面的hessian和sofa-hessian可以分别测试下是否配置SerializerFactory
    • 运行方式:run deser --apis databind --libs gson,fastjson,jackson,sofa_hessian,hessian
  • jvm-serializers
    • make/make clean
    • sh run-bench.sh json/fastjson/databind,sofa-hessian,json/jackson/databind,hessian,json/gson/databind
    • sh mk-stats.sh
    • 最终的数据在results目录中
    • 详见README

java-json-benchmark测试结果

Benchmark                             Mode  Cnt        Score        Error  Units
Serialization.sofa_hessian           thrpt   20   631137.200 ±  66541.102  ops/s
Serialization.sofa_hessian           thrpt   20   717326.984 ±  72366.123  ops/s (set factory)
Serialization.hessian                thrpt   20   583532.692 ±  40079.737  ops/s
Serialization.hessian                thrpt   20   612836.747 ±  21738.513  ops/s (set factory)


Serialization.gson                   thrpt   20   354742.866 ±  82372.090  ops/s
Serialization.fastjson               thrpt   20   830583.700 ±  13781.901  ops/s
Serialization.jackson                thrpt   20   905704.118 ± 138870.721  ops/s
Serialization.jackson_afterburner    thrpt   20  1134658.986 ±  18986.503  ops/s

Benchmark                             Mode  Cnt       Score       Error  Units
Deserialization.sofa_hessian         thrpt   20   550883.281 ±  49069.478  ops/s (set factory)
Deserialization.sofa_hessian         thrpt   20   556774.703 ±  16264.901  ops/s
Deserialization.hessian  	     thrpt   20   500251.967 ±  26627.266  ops/s (set factory)
Deserialization.hessian              thrpt   20   566192.222 ±  10740.400  ops/s

Deserialization.fastjson             thrpt   20   408527.178 ±  84369.730  ops/s
Deserialization.gson                 thrpt   20   532821.098 ±  13968.660  ops/s
Deserialization.jackson              thrpt   20   793011.238 ±  13809.524  ops/s
Deserialization.jackson_afterburner  thrpt   20   891028.981 ±  22881.386  ops/s

image.png

jvm-serializers测试结果

下面ser, deser的单位是ns。

                                   create     ser   deser   total   size  +dfl
json/fastjson/databind                 53    1288    1349    2637    489   271
json/jackson/databind                  61    1376    2250    3626    488   271
sofa-hessian                           56    3678    3490    7168    503   319
sofa-hessian-no-factory                54    3688    3653    7342    503   319
hessian                                55    3420    5308    8727    504   319
json/gson/databind                     55    5538    4000    9538    489   268

数据大小,差不多。

总结论

从好到差: jackson、fastjson、sofa-hessian、hessian、gson

参考