iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中常用的json库性能比较
  • 341
分享到

Java中常用的json库性能比较

2023-06-16 20:06:10 341人浏览 八月长安
摘要

本篇内容介绍了“Java中常用的JSON库性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用于比较的库用4中json库进行比较,分别是

本篇内容介绍了“Java中常用的JSON库性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

用于比较的库

用4中json库进行比较,分别是:FastJson,Gson,Jackson

比较方式

主要从开发中常用的几方面入手比较,分别如下:

Java对象转化成为json字符串

集合对象转化成为json字符串

字符串转化成json对象

字符串转化成java对象

字符串转化为json数组

字符串转化成为java集合

每种操作,通过计算重复执行100 0000次进行性能比较。

结果对比

Java中常用的json库性能比较

从结果看,fastjson的速度是***的,gson的速度最慢,这也是为什么被戏称为“龟son“的原因。

三个库的对比

jackson是springMVC默认的json转化库,有良好的稳定性的同时,也有不错的性能。

fastjson速度是最快的,但是版本迭代快,但是经常爆出存在漏洞,如果是比较保守的项目,如银行政府项目,是不推荐使用的。但是,fastjson的api设计,本人认为是所有json库里***雅方便的。

gson是谷歌出品,但是速度上就比较慢。

Java对象

Person.java

@Data public class Person {   private Integer id;   private String username;  private Integer age;  private String address; }

fastjson测试

使用的是fastjson1.2.58版本,也是目前***的fastjson版本。

测试代码如下:

public static void main(String[] args) {  // 构造对象  Person person = new Person();  person.setId(99999);  person.setUsername("Happyjava");  person.setAddress("广东省广州市,上海市,北京市,广东省深圳市,浙江省杭州市,");  person.setAge(100);   // Java对象转化成为json字符串  long start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = JSON.toJSONString(person);  }  System.out.println("Java对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 集合对象转化成为json字符串  List<Person> list = new ArrayList<>();  for (int i = 0; i < 100; i++) {  list.add(person);  }  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = JSON.toJSONString(list);  }  System.out.println("集合对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成json对象  start = System.currentTimeMillis();  String jsonsString = JSON.toJSONString(person);  for (int i = 0; i < 1000000; i++) {  JSONObject jsonObject = JSON.parseObject(jsonsString);  }  System.out.println("字符串转化成json对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成java对象  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  Person person1 = JSON.parseObject(jsonsString, Person.class);  }  System.out.println("字符串转化成java对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化为json数组  start = System.currentTimeMillis();  String jsonArrayStr = JSON.toJSONString(list);  for (int i = 0; i < 1000000; i++) {  JSONArray objects = JSON.parseArray(jsonArrayStr);  }  System.out.println("字符串转化为json数组耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成为java集合  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  List<Person> list1 = JSON.parseArray(jsonArrayStr, Person.class);  }  System.out.println("字符串转化成为java集合耗时:" + (System.currentTimeMillis() - start) + "ms"); }

结果如下:

Java对象转化成为json字符串耗时:625ms 集合对象转化成为json字符串耗时:7161ms 字符串转化成json对象耗时:640ms 字符串转化成java对象耗时:296ms 字符串转化为json数组耗时:17437ms 字符串转化成为java集合耗时:28611ms

gson测试

使用的是2.8.5版本,同时也是目前的***版本。

测试代码如下:

private static Gson gson = new Gson();   public static void main(String[] args) {  // 构造对象  Person person = new Person();  person.setId(99999);  person.setUsername("Happyjava");  person.setAddress("广东省广州市,上海市,北京市,广东省深圳市,浙江省杭州市,");  person.setAge(100);   // Java对象转化成为json字符串  long start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = gson.toJson(person);  }  System.out.println("Java对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 集合对象转化成为json字符串  List<Person> list = new ArrayList<>();  for (int i = 0; i < 100; i++) {  list.add(person);  }  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = gson.toJson(list);  }  System.out.println("集合对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成json对象  start = System.currentTimeMillis();  String jsonsString = gson.toJson(person);  for (int i = 0; i < 1000000; i++) {  JsonObject jsonObject = gson.fromJson(jsonsString, JsonObject.class);  }  System.out.println("字符串转化成json对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成java对象  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  Person person1 = gson.fromJson(jsonsString, Person.class);  }  System.out.println("字符串转化成java对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化为json数组  start = System.currentTimeMillis();  String jsonArrayStr = gson.toJson(list);  for (int i = 0; i < 1000000; i++) {  JsonArray objects = gson.fromJson(jsonArrayStr, JsonArray.class);  }  System.out.println("字符串转化为json数组耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成为java集合  Type type = new TypeToken<List<Person>>() {  }.getType();  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  List<Person> list1 = gson.fromJson(jsonArrayStr, type);  }  System.out.println("字符串转化成为java集合耗时:" + (System.currentTimeMillis() - start) + "ms");  }  }

测试结果如下:

Java对象转化成为json字符串耗时:1244ms 集合对象转化成为json字符串耗时:86041ms 字符串转化成json对象耗时:1009ms 字符串转化成java对象耗时:793ms 字符串转化为json数组耗时:62112ms 字符串转化成为java集合耗时:51087ms

Jackson测试

测试代码如下:

public static void main(String[] args) throws Exception {  ObjectMapper mapper = new ObjectMapper();   // 构造对象  Person person = new Person();  person.setId(99999);  person.setUsername("Happyjava");  person.setAddress("广东省广州市,上海市,北京市,广东省深圳市,浙江省杭州市,");  person.setAge(100);   // Java对象转化成为json字符串  long start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = mapper.writeValueAsString(person);  }  System.out.println("Java对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 集合对象转化成为json字符串  List<Person> list = new ArrayList<>();  for (int i = 0; i < 100; i++) {  list.add(person);  }  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  String string = mapper.writeValueAsString(list);  }  System.out.println("集合对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成json对象  start = System.currentTimeMillis();  String jsonsString = mapper.writeValueAsString(person);  for (int i = 0; i < 1000000; i++) {  Objectnode objectNode = mapper.readValue(jsonsString, ObjectNode.class);  }  System.out.println("字符串转化成json对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成java对象  start = System.currentTimeMillis();  for (int i = 0; i < 1000000; i++) {  Person person1 = mapper.readValue(jsonsString, Person.class);  }  System.out.println("字符串转化成java对象耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化为json数组  start = System.currentTimeMillis();  String jsonArrayStr = mapper.writeValueAsString(list);  for (int i = 0; i < 1000000; i++) {  ArrayNode arrayNode = mapper.readValue(jsonArrayStr, ArrayNode.class);  }  System.out.println("字符串转化为json数组耗时:" + (System.currentTimeMillis() - start) + "ms");   // 字符串转化成为java集合  start = System.currentTimeMillis();  JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, Person.class);  for (int i = 0; i < 1000000; i++) {  List<Person> list1 = mapper.readValue(jsonArrayStr, javaType);  }  System.out.println("字符串转化成为java集合耗时:" + (System.currentTimeMillis() - start) + "ms"); }

测试结果如下:

Java对象转化成为json字符串耗时:641ms 集合对象转化成为json字符串耗时:21238ms 字符串转化成json对象耗时:742ms 字符串转化成java对象耗时:680ms 字符串转化为json数组耗时:48641ms 字符串转化成为java集合耗时:44791ms

“Java中常用的json库性能比较”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java中常用的json库性能比较

本文链接: https://www.lsjlt.com/news/285048.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中常用的json库性能比较
    本篇内容介绍了“Java中常用的json库性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用于比较的库用4中json库进行比较,分别是...
    99+
    2023-06-16
  • JSON库的性能比较
    这篇文章主要讲解了“JSON库的性能比较”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JSON库的性能比较”吧! Java 中哪个 JSON 库的...
    99+
    2024-04-02
  • PHP 和 JavaScript 中的 NumPy 库:性能和功能比较
    NumPy 是 Python 中用于数值计算和科学计算的核心库,它提供了高效的数组操作和运算。但是,除了 Python 之外,NumPy 在其他编程语言中也有相应的实现。本文将比较 PHP 和 JavaScript 中的 NumPy 库,...
    99+
    2023-11-11
    javascript 响应 numpy
  • Golang标准库和外部库的性能比较
    目录1、路由2、JSON 序列化和反序列化3、是否使用ORM框架4、总结前言: 我已经在生产中使用 Go 一段时间了,因为它的构建规模较小,并且由 goroutines 提供的并发性...
    99+
    2024-04-02
  • C#、Java和Python性能比较分析
    本篇内容介绍了“C#、Java和Python性能比较分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实验这里使用三种语言进行矩阵乘法。 矩...
    99+
    2023-06-27
  • 用PHP连mysql和oracle数据库性能比较
    本篇内容主要讲解“用PHP连mysql和oracle数据库性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用PHP连mysql和oracle数据库性能比较...
    99+
    2024-04-02
  • Golang 与 Python 的性能比较
    go 在性能上通常优于 python,这归因于其编译性、并发性支持和高效的内存管理。基准测试显示 go 的响应时间更快,而实战案例展示了其在图像处理和科学计算上的优势。 Golang ...
    99+
    2024-05-11
    python golang 标准库
  • FreeBSD8.0与Ubuntu9.10的性能比较
    本篇内容介绍了“FreeBSD8.0与Ubuntu9.10的性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ubuntu 9...
    99+
    2023-06-17
  • Hadoop和spark的性能比较
    本篇内容主要讲解“Hadoop和spark的性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop和spark的性能比较”吧!  Hadoop和spark的性能比较  Spark在内...
    99+
    2023-06-02
  • Oracle和DB2数据库性能比较分析
    Oracle和DB2数据库是两个领先的关系型数据库管理系统,它们在企业级应用程序中广泛使用。在实际应用中,数据库的性能往往是评价数据库系统优劣的重要指标之一。本文将对Oracle和DB...
    99+
    2024-03-09
    性能 oracle db sql语句
  • Sybase和Oracle数据库系统的功能与性能比较
    Sybase和Oracle数据库系统的功能与性能比较 随着信息技术的不断发展与进步,数据库系统作为企业管理信息化的基础设施之一,扮演着至关重要的角色。Sybase和Oracle作为主流...
    99+
    2024-03-08
    oracle 比较 sybase
  • 推荐和比较常用的Golang日志库
    Golang是一种非常流行的编程语言,常用于开发高性能、高可靠性的服务端应用程序。在实际开发中,日志是一项非常重要的功能,用于记录程序运行时的各种状态信息、异常信息以及错误日志等。使用日志,可以方便地进行调试...
    99+
    2024-01-16
    GLOG LOGRUS ZAP
  • Java String类的性质与比较
    目录1.什么是String?2.String类的构造方法3.String类的性质4.String之间的相互比较1.什么是String? 首先,初学者一定要知道String是一个类,...
    99+
    2024-04-02
  • 比较Flask应用部署的Gunicorn和uWSGI性能对比
    Flask应用部署:Gunicorn vs uWSGI的比较 引言:Flask作为一种轻量级的Python Web框架,受到了很多开发者的喜爱。在将Flask应用部署到生产环境时,选择适合的服务器网关接口(Server Gate...
    99+
    2024-01-17
    Flask gunicorn uwsgi
  • Python开发常用五种循环方式的场景性能比较
    目录1.for 循环2.while 循环3.do-while 循环4.for-else 循环5.while-else 循环Python是一门高级编程语言,其拥有多种循环方式,如for...
    99+
    2023-05-18
    Python常用循环方式对比 Python循环方式 Python循环
  • Percona Server与MySQL 5.5性能的比较
    本篇内容介绍了“Percona Server与MySQL 5.5性能的比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2024-04-02
  • mysql的数据压缩性能比较
    本篇内容主要讲解“mysql的数据压缩性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql的数据压缩性能比较”吧! 1. 测试环境:软硬件...
    99+
    2024-04-02
  • PHP与JSP的性能测试比较
    小编给大家分享一下PHP与JSP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!测试环境:◆硬件:P4 2.4G,1G内存◆软件:WindowsXP+...
    99+
    2023-06-17
  • HTTPS、SPDY和HTTP/2的性能比较
    HTTPS、SPDY和HTTP/2都是与网络通信相关的协议,它们在性能方面有一些不同。HTTPS是HTTP的加密版本,通过使用SSL...
    99+
    2023-09-22
    HTTPS
  • Java中的比较器(Comparator)
    Java中的比较器(Comparator)是一种对象,用于定义两个对象之间的比较规则。它是一个独立的类,实现了Comparator接口,通常用于对集合中的元素进行排序。Comparator接口中有一个compare()方法,它接受两个对象作...
    99+
    2023-09-01
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作