开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )

发布时间:2020-08-02 10:20:19 作者:jjjssswww
来源:网络 阅读:371

Json 已成为当前服务器与 web 应用之间数据传输的公认标准。

   微服务及分布式架构经常会使用 Json 来传输此类文件,因为这已经是 webAPI 的事实标准。

   不过正如许多我们习以为常的事情一样,你会觉得这是理所当然的便不再深入比较。

   我们很少会去想用到的这些 Json 库到底有什么不同,但事实上它们的确是不太一样的。

   因此,我们团队来对常用的三个 Json 库运行测试,看看在解析不同大小文件时哪个库的速度最快。

   在给定的文件大小下,你可以看到不同库之间的解析速度存在着明显的差别。

   高吞吐量的情况下,会频繁传输解析小文件,因此一开始的时候可能性能的差距并不明显。

   但如果你需要在非常高负载下频繁地解析大量的小文件,差距就开始增大了。

   不是所有的 Json 库都叫"特仑苏"。如何根据使用场景才选择正确的库是相当重要的。

回到顶部

1. 选取的开源 Json 库

   选择三个个主流的Json 库来进行基准测试:Jackson, Json .simple,GSON

回到顶部

2. 相对条件下的基准测试

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

   这个基准测试主要关注两个关键场景:

   1.大文件下(190MB)的解析速度与小文件(1KB)下的解析速度。大文件取自这里:https://github.com/zeMirco/sf-city-lots-Json 。

   2.小文件是从这里随机生成的:http://www.Json -generator.com/。

   不管是大文件还是小文件,我们都会用同一个库重复运行10次。

   对于每一个大文件,我们都会用同一个库来分别运行10 次。

   而对于小文件,在单个库的单次运行中会重复执行10000 次。

   在小文件测试的各次迭代中,文件内容都不会驻留在内存里。

大文件结果

开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )

   Jackson 与 Json .simple 领跑了这轮测试,整体来看 Jackson 又要略优于 Json .simple。

   从测试运行的平均结果来看,Jackson 与 Json .simple 在大文件上的表现要优秀。

   而 JsonNP 排名第三落后甚远,Gson 更是遥遥垫底。

小文件结果

开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )

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

   Gson 这个冠军还是当之无愧的,Json.simple 第二也没什么悬念。Jackson这轮却是垫底了。

   尽管 Json.simple 没有在任何文件上夺得第一,但总体来看它的解析速度却是排名第二位的。

   还有一个值得注意的是,尽管 Jackson 是这轮最慢的库,但是它在所有文件中的表现都非常一致。

   其它三个库虽然偶然会比 Jackson 快很多,但在另一些文件上的解析速度却是旗鼓相当甚至更差。

回到顶部

3. 最后总结

   解析速度并非衡量一个Json 库的唯一指标,但它的确非常重要。

   通过运行这次基准测试,我们发现没有一个库能在所有文件上击败对手。

   大文件中表现优秀的却在小文件上栽了根头,反之亦然。

如果要从解析速度来看选择哪个库的话还得取决于你的使用场景。


推荐阅读:
  1. Java几种常用JSON库性能比较详解
  2. 为什么不使用fastjson

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jackson 能对

上一篇:php-fpm 参数及配置详解

下一篇:Windows平台下忘记Oracle登陆密码解决办法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》