1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 性能大比拼!这三个主流的JSON解析库 一个快 一个稳 还有一个你想不到!

性能大比拼!这三个主流的JSON解析库 一个快 一个稳 还有一个你想不到!

时间:2020-10-13 20:35:44

相关推荐

性能大比拼!这三个主流的JSON解析库 一个快 一个稳 还有一个你想不到!

大家好,我是hub哥,又到了本期分享。这期我们来聊聊Java中解析JSON的三个主流类库:

FastJSON、Gson和Jackson。

先来看下这三货在Github上的基本数据:

FastJson

Github地址:/alibaba/fastjson

Jackson

Github地址:/FasterXML/jackson

Gson

Github地址:/google/gson

码友们对这三货各方面也一直争议不断,大多关心的,还是性能以及稳定性。本文主测性能;对于这三个库的简介以及用法,就不去废话了,一个简单明了的测评,直接上!

主要对这三个类库在JSON序列化和反序列化在速度方面的表现做一些测评,为了防止由于内存导致测试结果出现偏差,测试中对JVM内存配置-Xmx4g -Xms4g。

测试代码已经贴到了文章末尾。

JSON序列化(Object => JSON)

测试样本数量为100000个,为了保证每个类库在测试中都能处理同一个样本,先把样本Java对象保存在文件中。每个类库测试5次,每次循环测试10遍,去掉最快速度和最慢速度,对剩下的8遍求平均值作为最终的速度,取5次测试中最好的平均速度作为最终的测试数据。

测试结果:

从测试数据可以看出,Jackson是最快的(耗时比Gson少了大约700毫秒),Gson耗时最久。

JSON反序列化(JSON => Object)

同样,测试样本数量为100000个,为了保证每个类库在测试中都能处理同一个样本,先把样本JSON对象保存在文件中。每个类库测试5次,每次循环测试10遍,去掉最快速度和最慢速度,对剩下的8遍求平均值作为最终的速,取5次测试中最好的平均速度作为最终的测试数据。

测试结果:

从测试数据可以看出,在反序列化上性能 FastJson最快,不过与Jackson差距并不明显,Gson耗时最久

可见,不管是序列化还是反序列化,速度方面首先阵亡的,是Gson!

那还剩下FastJson和Jackson

FastJson在某些方面确实快一些,但是和Jackson 的差距不大,优势并没有太明显。Jackson还可以加上AfterBurner来使用byte generation,这样和FastJson的差距就更小了。

除了在反序列化的速度胜出外,FastJson相比较 Jackson 有不少短板,我们可以从以下3方面对比:

可定制性

Jackson有灵活的API,可以很容易进行扩展和定制,而且很多时候需要的模块都已经有人提供了。比如guava中定义的数据类型,比如kotlin语言Immutable的类型等,比如java8 引入的新日期时间类型和Optional

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。