加入收藏 | 设为首页 | 会员中心 | 我要投稿 泉州站长网 (https://www.0595zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

JSON.simple VS GSON VS Jackson VS JSONP

发布时间:2021-05-01 16:15:01 所属栏目:传媒 来源:互联网
导读:高吞吐量的情况下,会频繁地传输并解析小文件,因此一开始的时候可能性能的差距并不明显。但如果你需要在非常高负载下频繁地解析大量的小文件,差距就开始增大了。微服务及分布式架构经常会使用 JSON 来传输此类文件,因为这已经是 WEB API 的事实标准。 不


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

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

JSON 库

JSON.simple vs GSON vs Jackson vs JSONP

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

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

  • Yidong Fang 的 JSON.simple 。JSON.simple 是一个 JSON 编解码的 Java 工具库。它旨在打造一个轻量简单且高性能的工具库。
  • Google 的 GSON。GSON 这个 Java 库能够在 Java 对象和 JSON 间进行相互转换。同时它还提供了对 Java 泛型的完整支持,而且还不需要你在类上面添加注解。无需添加注解使用起来则更为便捷,同时在无法修改源代码的情况下这还是一个必要的先决条件。
  • FasterXML 的 Jackson 项目。Jackson 是一个数据处理的工具套件,它的亮点是流式的 JSON 解析器及生成器。它是专为 Java 设计的,同时也能处理其它非 JSON 的编码。从我们在 Github 中的统计来看,它应该是***的 JSON 解析器。
  • Oracle 的 JSONP。JSONP (JSON Processing) 是 JSON 处理的一套 Java API, 从名字来看它就是用来生成及解析 JSON 串的。这是 JSR353 规范的一个开源实现。

基准测试

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

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

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

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

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

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

JSON 库

JSON.simple vs GSON vs Jackson vs JSONP

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

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

  • Yidong Fang 的 JSON.simple 。JSON.simple 是一个 JSON 编解码的 Java 工具库。它旨在打造一个轻量简单且高性能的工具库。
  • Google 的 GSON。GSON 这个 Java 库能够在 Java 对象和 JSON 间进行相互转换。同时它还提供了对 Java 泛型的完整支持,而且还不需要你在类上面添加注解。无需添加注解使用起来则更为便捷,同时在无法修改源代码的情况下这还是一个必要的先决条件。
  • FasterXML 的 Jackson 项目。Jackson 是一个数据处理的工具套件,它的亮点是流式的 JSON 解析器及生成器。它是专为 Java 设计的,同时也能处理其它非 JSON 的编码。从我们在 Github 中的统计来看,它应该是***的 JSON 解析器。
  • Oracle 的 JSONP。JSONP (JSON Processing) 是 JSON 处理的一套 Java API, 从名字来看它就是用来生成及解析 JSON 串的。这是 JSR353 规范的一个开源实现。

基准测试

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

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

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

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

(编辑:泉州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读