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

2023-09-25 6 0

在这里插入图片描述

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

FastJSON、Gson和Jackson。

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

FastJson
Github地址:https://github.com/alibaba/fastjson
在这里插入图片描述

Jackson
Github地址:https://github.com/FasterXML/jackson
在这里插入图片描述

Gson
Github地址:https://github.com/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方面对比:

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

相关文章

eclipse中更改SVN账号的步骤
eclipse中配置tomcat插件的步骤
eclipse中安装svn插件的步骤
按月统计员工登录情况及日期函数的运用
软件项目版本号设置
TexturePacker 图片打包工具