Google gson 和 alibaba 性能测试


  List list = new ArrayList();
        int j = 0;
        U u = null;
        while (j<1000000){
            u = new U();
            u.setAge(j);
            u.setName("zhangsan " + j);
            u.setNo("" + j);
            list.add(u);
            j++;
        }
运行结果:

ali fastjson
 long s = System.currentTimeMillis();
        System.out.println("before alibaba:" +s);
        String aliJson = com.alibaba.fastjson.JSON.toJSONString(list);
        long e = System.currentTimeMillis();
        System.out.println("after alibaba:" +e);
        System.out.println("diff:" + (e-s));
        list = null;
        long s3 = System.currentTimeMillis();
        List sult = (List) com.alibaba.fastjson.JSONObject.parse(aliJson);
        long e3 = System.currentTimeMillis();
        System.out.println("反 diff:" + (e3-s3));
gson 
 long s1 = System.currentTimeMillis();
        System.out.println("before Gson:" + s1);
        Gson gson = new Gson();
        String gsonStr = gson.toJson(list);
        long e1 = System.currentTimeMillis();
        System.out.println("after Gson:" + e1);
        System.out.println("diff:" + (e1-s1));
        list = null;
        long s4 = System.currentTimeMillis();
        List sult2 = gson.fromJson(gsonStr,List.class);
        long e4 = System.currentTimeMillis();
        System.out.println("反 diff:" + (e4-s4));

测试结果:
数据较少时,gson还是比较快的

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

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

 

 

相同点:都是根据JSON数据创建相应的类

不同点:
1.调用方式区别
谷歌:方法都是非静态的,需要先创建对象,再去调用
阿里:方法都是静态的,直接用类调用,不需要创建对象

2.方法区别:
谷歌:fromJson(参数1,参数2)
阿里:JSON.parseXX(参数1,参数2)
    具体是parseObject()还是parseArray(),根据需要定
1
2
3
4
5
6
7
8
9
10
11
见Gson解析和阿里解析具体实例:

Gson解析法:http://blog.csdn.net/baidu_37107022/article/details/71192363

阿里解析法:http://blog.csdn.net/baidu_37107022/article/details/71192478
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值