文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

JSON库的性能比较

2024-04-02 19:55

关注

这篇文章主要讲解了“JSON库的性能比较”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JSON库的性能比较”吧!

 

Java 中哪个 JSON 库的解析速度是最快的?

JSON 已经成为当前服务器与 WEB  应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了。我们很少会去想用到的这些 JSON  库到底有什么不同,但事实上它们的确是不太一样的。因此,我们运行了一个基准测试来对常用的几个 JSON  库进行了测试,看看在解析不同大小的文件时哪个库的速度是最快的。下面我会把结果分享给大家。

JSON 通常用于传输及解析大文件。这对运行在 Hadoop 或者是 Spark  集群上的数据处理程序而言是个很常见的场景。在给定的文件大小下,你可以看到不同库之间的解析速度存在着明显的差别。

高吞吐量的情况下,会频繁地传输并解析小文件,因此一开始的时候可能性能的差距并不明显。但如果你需要在非常高负载下频繁地解析大量的小文件,差距就开始增大了。微服务及分布式架构经常会使用  JSON 来传输此类文件,因为这已经是 WEB API 的事实标准。

不是所有的 JSON 库都叫” 特仑苏”。如何根据使用场景才选择正确的库是相当重要的。希望这个基准测试能够对你有所帮助。

JSON 库

JSON.simple vs GSON vs Jackson vs JSONP

我们选择了四个主流的 JSON 库来进行基准测试:JSON.simple, GSON, Jackson 以及 JSONP。在 Java 中进行 JSON  解析通常都会用到这几个库,选择它们的原因是它们在 Github 项目中的亮相频率很高。

下面便是我们所测试的 JSON 库:

基准测试

我们同时使用大文件和小文件对这些库进行了基准测试。随着文件大小的不同,处理这些文本所需要的系统资源也会随之上升。

这个基准测试主要关注两个关键场景:大文件下 (190MB) 的解析速度与小文件(1KB)下的解析速度。大文件取自这里。小文件是从这里随机生成的。

不管是大文件还是小文件,我们都会用同一个库重复运行 10 次。对于每一个大文件,我们都会用同一个库来分别运行 10  次。而对于小文件,在单个库的单次运行中会重复执行 10000 次。在小文件测试的各次迭代中,文件内容都不会驻留在内存里,测试所运行的机器是 AWS 的  c3.large 实例。

大文件的完整测试结果如下,我对小文件的结果求了个平均值。

大文件结果

JSON库的性能比较

结果相差甚大!Jackson 与 JSON.simple 领跑了这轮测试,整体来看 Jackson 又要略优于  JSON.simple。从测试运行的平均结果来看,Jackson 与 JSON.simple 在大文件上的表现要优秀一些,而 JSONP  排名第三落后甚远,GSON 更是遥遥垫底。

我们再把结果换算成百分比看下。平均来看 Jackson 要胜出一筹。下面是结果的百分比数据,可以从两个维度来进行比较:

JSON库的性能比较

不同库之间的性能差别着实不小。

结论:Jackson 以略微优势胜出。JSON.simple 紧随其后,而剩下两个库则远远落后。

小文件结果

JSON库的性能比较

上表记录的是对每个文件解析 10 次的平均时间,总的平均时间见下方。各个库在小文件测试中夺冠的次数如下:

这个结果貌似很有说服力。然而,从所有文件的平均结果来看,GSON 这个冠军还是当之无愧的,JSON.simple 和 JSONP  的二三名之争应该没什么悬念。Jackson 这轮却是垫底了。尽管 JSON.simple 没有在任何文件上夺得***,但总体来看它的解析速度却是排名第二位的。而  JSONP 尽管在许多文件上都拿到了冠军,但平均来看却只拿到了第三名的成绩。

还有一个值得注意的是,尽管 Jackson 是这轮最慢的库,但是它在所有文件中的表现都非常一致,其它三个库虽然偶然会比 Jackson  快很多,但在另一些文件上的解析速度却是旗鼓相当甚至更差。

我们再把这些数字转换成百分比看看,还是同样的两个维度:

JSON库的性能比较

和大文件测试相比,这次的差距相对要小一些,但也还是不容忽视的。

结论:很不幸的是,JSON.simple 又以微弱的劣势与冠军失之交臂,这轮 GSON 胜。JSONP 仍是千年老三而这回 Jackson  则赶了个晚集。

总结

解析速度并非衡量一个 JSON  库的唯一指标,但它的确非常重要。通过运行这次基准测试,我们发现没有一个库能在所有文件上击败对手。大文件中表现优秀的却在小文件上栽了根头,反之亦然。

除非不考虑解析速度,不然 JSONP 完全没有什么值得称道的。它在大文件和小文件上的表现与其它库相比都很糟糕。所幸的是,Java 9 很快便会有原生的  JSON 实现了,相信 JSONP 将来的表现仍然值得期待。

感谢各位的阅读,以上就是“JSON库的性能比较”的内容了,经过本文的学习后,相信大家对JSON库的性能比较这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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