前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android中JSON库性能比较

Android中JSON库性能比较

作者头像
蜻蜓队长
发布2019-09-16 17:58:27
2.4K0
发布2019-09-16 17:58:27
举报
文章被收录于专栏:Android机动车

JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。 目前对于Java开源的JSON类库有很多种,下面我们取四个常用的JSON库进行性能测试对比,同时根据测试结果分析如果根据实际应用场景选择最合适的JSON库。JSON类库分别为:JSONObject、Gson、FastJson和Jackson。 简单介绍下四个类库的身份背景。

  • JSONObject:Android原生提供的Json处理API。其核心是JSONObject和JSONArray两个类。
  • Gson:Gson是目前功能最全的Json解析工具,Gson当初是为因应Google公司内部需求而由Google自行研发而来。Gson的应用主要为toJson与fromJson两个转换函数。而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
  • FastJson:Fastjson是一个Java语言编写的高性能的JSON处理器。FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
  • Jackson:基于事件驱动,与GSON相同,先创建一个对应于JSON数据的JavaBean类就可以通过简单的操作解析出所需JSON数据。但和Gson解析不同的是,GSON可按需解析,Jackson无法按需解析。

选择一个合适的JSON库要从多个方面进行考虑:序列化与序列化的耗时及内存的消耗,还有就是代码操作是否简单。

针对这三种Json处理方案,我们以真实数据进行测试比较:分别使用三种方式进行普通Object类的序列化与反序列化、List类的序列化和反序列化,处理量级分别是10、100、1000和10000的情况下,比较这些操作的耗时与内存消耗,最终得出结果如下:

List反序列化

List序列化

普通Object反序列化

普通Object序列化

内存消耗

上图中的数据,都进行了四次实验并取平均值所得。

由上述统计数据得出:

  • 反序列化操作:总体来说,JSONObject处理速度最优,无论是处理普通Object还是List集合;
  • 反序列化操作:随着处理量级的增大,Gson库更加费时;
  • 序列化操作:总体依旧是JSONObject处理速度最快,然后是FastJson,Gson,Jackson最差;
  • FastJson操作,处理量级对内存消耗影响不大,所耗内存相对较少;
  • 进行大量操作时,JSONObject内存消耗明显增加,高于其他两种方式;
  • Jackson在序列化和反序列化时耗时都是最长的,内存消耗也是最大的,所以不建议使用Jackson。

综上,当数据量级不大时,从内存消耗和处理速度考虑,都应首选JSONObject,但JSONObject代码繁杂,容易出错,当数据量大时,不建议使用JSONObject,是因为其消耗内存过大,容易引发异常。

数据量不大时,Gson与FastJson性能相当,FastJson稍优于Gson,但处理大量数据时,FastJson在内存消耗方面有明显优势。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android机动车 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • List反序列化
  • List序列化
  • 普通Object反序列化
  • 普通Object序列化
  • 内存消耗
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档