文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

四大流行Java JSON库的终极比较:JSON.simple vs. GSON vs. Jackson vs.JSONP

2024-12-02 18:31

关注

【51CTO.com快译】如今,JSON已经是公认的、服务器与Web应用之间数据传输的API标准。它通过各种代码库,可以在Hadoop或Spark集群中,方便那些基于微服务和分布式架构的数据处理应用程序,传输和解析不同类型与大小的文件。不过,并非所有的JSON库都会执行相同的操作方式。在高吞吐量的环境中,一旦出现了快速、连续、大量的小文件,它们的解析速度就会出现巨大的差别。

可见,为自己的应用环境选择合适的代码库,往往是至关重要的。为此,我准备了一系列基准性的测试,将和您讨论目前四种最为流行的Java JSON库--JSON.simple、GSON、Jackson、以及JSONP,在解析不同文件大小时的速度,以方便您能够做出明智的选择。

四大JSON库简介

由于这四种代码库都时常被广泛地用于Java环境的JSON处理过程,因此我们根据它们在Github项目中的受欢迎程度,进行逐一介绍:

基准:2017

我们根据不同文件大小的处理需求,在不同的库环境中,测试性地解析了不同大小的文件。总的说来,我们将基准测试分为两个关键场景:

无论是大文件,还是小文件,我们让每个库都对每个文件运行10次。其中,对于大文件而言,每个库的每一次运行时,都会进行10次迭代;而对于小文件,它们会每次运行10,000次迭代。而且在小文件的测试中,我们不会在迭代的间隙中,将文件保留在内存里,而是直接在AWS上的c3.large实例中运行测试。

下图完整地显示了大文件的解析结果。为了节省空间,我对小文件的解析结果进行了平均。如果您想查看扩展的结果,请参见--https://docs.google.com/spreadsheets/d/1iOSAkqRwGGbLHRkcKSyHwpOWYdSrkuQKyUIZ6ef7N-I/edit?usp=sharing。而如果您想查看小文件或库的源代码,则请参见--https://github.com/terencetaih/aws-speed。

大文件结果:2017

从上表中,我们可以看出Jackson或JSON.simple在处理大文件上用时最少,而且Jackson在总体上会领先于JSON.simple。通过查看所有测试的平均运行结果可知,Jackson和JSON.simple遥遥领先,JSONP名列第三,GSON排在最后。下面,让我们以Jackson为基准,用百分比来表示各个JSON库的解析速度:

小文件结果:2017

上表显示了每个文件被运行10次的平均值,最下面一行是总的平均值。各个库所获得的文件数量分别为:

由所有文件的平均测试结果可知:

让我们同样以GSON为基准,用百分比来表示各个JSON库的解析速度:

结论:2017

在选择JSON库时,解析速度虽然并非唯一的考虑因素,但它的确是一个重要的参考指标。在运行上述基准测试时,我们发现没有一个库可以在所有文件大小、以及所有解析速度上,同时能够击败其他库。在大文件解析上表现最好的库,反而对小文件的表现并不佳,反之亦然。

因此,我们可以参照如下环境特征,根据各自的解析速度优势,选择合适的JSON库。

JSONP在任何情况下,与其他三种JSON库相比,对于各种文件的解析速度性能都比较差,因此不太值得推荐。当然,据报道Java 9正在获得JSON的原生实现,那么我们可以预见到它将会在参考实现方面,有所改进。

基准:2021

下面,我们将使用最新的JSON库,并在Java 11上再次运行相同的基准测试。总体而言,它们会在性能上,比我们之前运行的基准测试,出现显著的提高。

大文件结果:2021

如上表所示,本轮基准测试的赢家是GSON,JSONP紧随其后,接着是Jackson,最后才是JSON.simple。那么,让我们以GSON为基准,用百分比来表示各个JSON库的解析速度:

小文件结果:2021

上表显示了小文件的测试结果,Gson以明显的速度优势,再次击败了其他三个JSON库,蝉联冠军。JSONP紧随其后,接着是JSON.simple,最后才是Jackson。

由表可知,Gson处理这些文件的速度比第二名快了近200多毫秒。

结论:2021

通过上述两大类测试与比较,我们不难发现,无论是Java本身,还是各个JSON库,都在速度上提升了不少。其中,GSON的进步最为明显,并且能够最终在大文件和小文件,两类基准测试中脱颖而出。

原文The UltimateJSONLibrary:JSON.simple vs. GSON vs. Jackson vs.JSONP,作者:Nick Andrews

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯