JSON性能比对

大家都知道JSON是一个与平台无关的一种数据格式,所以它也得到来广大编程者的认可,在目前各种JSON格式的第三方LIB都层出不穷,如雨后春生一样,面对这些,我们到底取怎么选择呢,首先,我们来比对一下目前其相关的JSON解析库的性能:

Json BecnhMark

Bench Protole

Those test are generate by parrsing 50.000 pre-build json string.

to minimise gc effect on bench, a new VM is lanched for each test.

New Tests

The bench run on an intel P9700 CPU, using sun JVM 1.6.22 64bit + SSD each bench had been lunch 10 times, the best time had been keeped.

BenchMark run directly after the JVM start

update on 30 May

  • JsonIJ version is now 0.2.7
  • Json-smart is now 1.0.6.3
  • argo is now 2.8

BenchMark : bench

Result display as % of the fastest API. Lower is better, for example 400% means that JSon-smart is 4 times faster.

Test Sojo Argo json-lib JsonMe org.json json-Simple Jackson StringTree JsonIJ Json-fast Json-Smart
mixte 1 129 % 822 % 834 % 395 % 437 % 324 % 269 % 287 % 205 % 134 % 100 %
text 1 628 % 965 % 879 % 363 % 610 % 434 % 419 % 369 % 271 % 174 % 100 %
int 1 300 % 966 % 718 % 359 % 521 % 281 % 286 % 293 % 224 % 118 % 100 %
unicode 1 177 % 674 % 549 % 218 % 445 % 351 % 315 % 216 % 256 % 147 % 100 %
boolean 1 285 % 724 % 809 % 391 % 498 % 332 % 291 % 210 % 228 % 138 % 100 %
float 1 145 % 794 % 711 % 1 152 % 450 % 243 % 265 % 272 % 201 % 126 % 100 %
TOTAL 1 251 % 818 % 739 % 511 % 484 % 319 % 300 % 272 % 228 % 137 % 100 %

BenchMark with preload classes

Not updated yet

preloading class look to have no significant effect, due to SSD usage.

Test JsonIJ Sojo Argo json-lib org.json JsonMe json-Simple Jackson StringTree Json-fast Json-Smart
mixte 1 302 % 1 150 % 804 % 858 % 452 % 365 % 323 % 258 % 275 % 133 % 100 %
text 1 772 % 1 492 % 914 % 782 % 582 % 332 % 409 % 355 % 332 % 159 % 100 %
int 1 266 % 1 345 % 907 % 723 % 447 % 290 % 279 % 250 % 304 % 118 % 100 %
unicode N/A 1 185 % 674 % 538 % 448 % 216 % 358 % 280 % 216 % 135 % 100 %
boolean 1 401 % 1 168 % 680 % 717 % 459 % 283 % 300 % 254 % 192 % 129 % 100 %
float 1 024 % 1 129 % 740 % 707 % 384 % 1 043 % 247 % 242 % 280 % 125 % 100 %
TOTAL N/A 1 230 % 781 % 717 % 454 % 452 % 314 % 269 % 266 % 132 % 100 %

Comment by tsaloranta@gmail.com May 16, 2011

Where is the source? Are you warming up GC (if not, this test is totally meaningless)? What kind of JSON are you parsing?

Comment by project member uriel.chemouni May 16, 2011

Sources are available now: http://json-smart.googlecode.com/svn/trunk/bench/

Json test string generator: http://json-smart.googlecode.com/svn/trunk/bench/src/net/minidev/bench/json/TestData.java

a new JVM is started for each test, GC is never explicitely called.

Comment by tsaloranta@gmail.com May 19, 2011

Whops, meant JVM warmed up, not GC. :-)

It is necessary to run code to be tested for couple of seconds first on new JVM, before taking measurements; otherwise test is about how fast JVM can load (and possibly inline) bytecode.

Comment by project member uriel.chemouni May 23, 2011

Warmed up test is now available.

Comment by Programm...@gmail.com Jun 22, 2011

Using the jvm-serializers (https://github.com/eishay/jvm-serializers/wiki) test suite, I get significantly different results. When testing with about 736 bytes of JSON input (in java.lang.String format), my results show the different APIs performing in the following order, ranked from fastest to slowest.

                                ser     deser   total
json/jackson-databind-strings   6034    8085    14209
json/fastjson-databind          5837    8924    14826
json/json-smart/manual/tree     13104   9644    23182
json/org.json/manual/tree       16404   20039   36526
json/json.simple/manual/tree    15971   21954   38170
json/jsonij-manual/tree         75124   16888   92275
json/argo-manual/tree-builders  176566  51439   228847
json/json-lib-databind          73202   169966  243474

Using the json-smart performance as the baseline, here are the same numbers as percentages (rounded to the nearest whole number).

                                ser     deser   total
json/jackson-databind-strings   46%     84%     61%
json/fastjson-databind          45%     93%     64%
json/json-smart/manual/tree     100%    100%    100%
json/org.json/manual/tree       125%    208%    158%
json/json.simple/manual/tree    122%    228%    165%
json/jsonij-manual/tree         573%    175%    398%
json/argo-manual/tree-builders  1347%   533%    987%
json/json-lib-databind          559%    1762%   1050%

These results place the performance of some of the different APIs in significantly different orders, and some with significantly different percentages.

As time permits, I'll try to figure out what the cause of the different results is.

(I have no affiliation with any of these projects, or with any other JSON processing project.)


以上是JSON-SMART提出的相关比对,链接: http://code.google.com/p/json-smart/wiki/Benchmark

从上面可以看出JSON-SMART的性能远优于其它,如果你还在犹豫,请不妨分别自己做个测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值