Google gson 和 alibaba 性能测试

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. List list = new ArrayList();  
  2.       int j = 0;  
  3.       U u = null;  
  4.       while (j<1000000){  
  5.           u = new U();  
  6.           u.setAge(j);  
  7.           u.setName("zhangsan " + j);  
  8.           u.setNo("" + j);  
  9.           list.add(u);  
  10.           j++;  
  11.       }  

运行结果:

ali fastjson

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. long s = System.currentTimeMillis();  
  2.        System.out.println("before alibaba:" +s);  
  3.        String aliJson = com.alibaba.fastjson.JSON.toJSONString(list);  
  4.        long e = System.currentTimeMillis();  
  5.        System.out.println("after alibaba:" +e);  
  6.        System.out.println("diff:" + (e-s));  
  7.        list = null;  
  8.        long s3 = System.currentTimeMillis();  
  9.        List sult = (List) com.alibaba.fastjson.JSONObject.parse(aliJson);  
  10.        long e3 = System.currentTimeMillis();  
  11.        System.out.println("反 diff:" + (e3-s3));  
gson 

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. long s1 = System.currentTimeMillis();  
  2.        System.out.println("before Gson:" + s1);  
  3.        Gson gson = new Gson();  
  4.        String gsonStr = gson.toJson(list);  
  5.        long e1 = System.currentTimeMillis();  
  6.        System.out.println("after Gson:" + e1);  
  7.        System.out.println("diff:" + (e1-s1));  
  8.        list = null;  
  9.        long s4 = System.currentTimeMillis();  
  10.        List sult2 = gson.fromJson(gsonStr,List.class);  
  11.        long e4 = System.currentTimeMillis();  
  12.        System.out.println("反 diff:" + (e4-s4));  



测试结果:

数据较少时,gson还是比较快的

当数据多时,【当前测试数据100万】gson 比较慢,而且非常耗内存

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. 比较来说, Gson 比 fastjson 考虑更全面, 对用 URL , UUID, BIT_SET, CALENDAR 等等,都有特定的输出规则.  
  2. 小数量的调用 Gson 比 fastjson 快一点. (几十毫秒,可以毫不在意.猜测是因为 javassist 生成新的 Wrapper 类导致,因为还要编译的.)  
  3. 大数量的调用 fastjson 比 Gson 快. (千万级别的.还不太确定为什么会变快, 猜测是 gson 的反射调用,毕竟比不上 fastjson Wrapper 类的真实调用.)  
  4. 代码可阅读性: fastjson  比 Gson 好很多很多.  
  5. fastjson 在要序列化对象的类型的判断上,使用的是 if else ,   
  6. Gson 使用的是遍历 TypeAdapterFactory集合,在每个 TypeAdapterFactory 里面做判断.而且使用了 N 多的匿名内部类, 想要一眼看出有哪些 TypeAdapterFactory 的实现都很困难.  
  7. 如果普通日常使用,推荐使用 fastjson,简单易懂,并且是国内程序员开发,有问题可以较容易的获得支持.  
  8. Gson 有对各种类型的属性支持, 如果有特殊类型json化需求可以选择 gson ,并自定义扩充.  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值