FastJSON、Gson、Jackson和Json-lib性能测试

来源:互联网 发布:淘宝网中老年女装棉衣 编辑:程序博客网 时间:2024/06/05 06:31

前言

javaEE开发中,java对象转json字符串必然存在,而时下有关这些类库有很多,用的比较多阿里的fastJSON,jackson,google的gson好像真的太慢了,作如下关于序列化和反序列化的测试:
 说明:本次测试并没有保存在磁盘上,只是做一个对象转换成字节序列。

准备

机器配置

  • OS:Ubuntu 16.04 64位
  • JVM:Oracle Corporation 1.8.0_101
  • CPU:2.9 GHz Intel Core i5
  • Cores (incl HT):8(2x4)
  • RAM 8G

项目说明

  • 管理工具 MAVEN
  • IDE Intellij

依赖版本

  • fastjson 1.2.6
  • jackson 2.8.3
  • gson 2.3.1
  • json-lib 2.4

测试代码

/** * Author: 遇见小星 * Email: tengxing7452@163.com * Date: 17-6-28 * Time: 上午9:53 * Describe: 书实体 */public class Book implements Serializable{    private Integer id;    private String name;    private Double price;    private boolean publish;    private Date createDate;}     /**     * 序列化     */    public static void serialize(Object obj,long times){        //每次迭代为其分配地址        for (int i=0;i<times;i++){            String out = JSON.toJSONString(obj).toString();        }    }    /**     * 反序列化     */    public static void deserialize(String str,long times){        for (int i=0;i<times;i++){            Book book = JSON.parseObject(str,Book.class);        }    }

 具体代码移步:github

测试结果

这里写图片描述
 从结果可以得知:fastjson和jackson差别并不是很大,只是在数据大于100w的反序列化的时候jackson比fastjson快了近40%,而后面的gson和json-lib就不说了。
 说明:其实就笔者来说,fastjson和jackson都用过,不管测试的结果如何,都只是一个小的测试而已,真正开发的时候还的选用项目合适的,并不是谁快用谁的。
 再次说明:由于笔者能力有限,测试所得数据可能存在误差,欢迎大家予以指正。

后记

  • fastjson还是国人用的多,老外用的多的还是jackson(知乎上面知道的).
  • Java序列化就是把对象转换成字节序列,而Java反序列化就是把字节序列还原成Java对象。
  • 采用Java序列化与反序列化技术,一是可以实现数据的持久化,在MVC模式中很是有用;二是可以对象数据的远程通信

参考文章

  • https://www.zhihu.com/question/44199956
  • http://blog.csdn.net/accountwcx/article/details/50252657
  • https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
  • http://blog.csdn.net/wangloveall/article/details/7992448/