打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java 三大json解析性能对比(json
            现在json的第三方的解析工具很多,我拿了3个比较常用的做了下简单的测试,发现jackson是大数据json的解析王者,也许这得力他基于流的方式。
        测试用列,10000000的json文本文件,一行是一个复杂的json对象如下:
        {"app":"yyhlweb","events":[{"type":"come","target":"com.youyuan.yyhl.activity.MainActivity","time":"2013-09-06 12:35:59"},{"type":"cbtn","target":"phoneBack","time":"2013-09-06 12:37:09"},{"type":"cbtn","target":"dialogExit","time":"2013-09-06 12:37:11"},{"type":"leave","target":"","time":"2013-09-06 12:37:11"}],"clientData":{"fid":"45001","platform":"android","os_ver":"4.2.2","imei":"356521051907413","userid":"117614041","ua":"GT-I9200","imsi":"460020394943982","resolution":"720x1280","net":"wifi","version":"40040003"}}
转成java对象,
    
        1.首先是gson:https://code.google.com/p/google-gson/
       

点击(此处)折叠或打开

  1.     //10000000,565,891s
  2.     @Test
  3.     public void testComplex() throws IOException {
  4.         long start = System.currentTimeMillis();
  5.         String content = "";
  6.         Gson gson = new GsonBuilder().create();
  7.         while ((content = reader.readLine()) != null) {
  8.             //System.out.println(content);
  9.             Behaviour behaviour = gson.fromJson(content, Behaviour.class);
  10.             //System.out.println(behaviour.getApp());
  11.         }
  12.         reader.close();
  13.         System.out.println((System.currentTimeMillis() - start) + "ms");
  14.     }
        gosn在处理一千万的的数据耗时565.891秒;

        2.然后是jackson,http://jackson.codehaus.org/

        

点击(此处)折叠或打开

  1.     //10000000,57,963ms
  2.     @Test
  3.     public void testReadJsonToObject() throws JsonSyntaxException, IOException {
  4.         long start = System.currentTimeMillis();
  5.         String content = "";
  6.         while ((content = reader.readLine()) != null) {
  7.             //System.out.println(content);
  8.             Behaviour behaviour = objectMapper.readValue(content, Behaviour.class);
  9.             //System.out.println(behaviour.getApp());
  10.         }
  11.         System.out.println((System.currentTimeMillis() - start) + "ms");
  12.     }

        jackson处理花了57.963秒,居然是gson的十倍,喔!


        3.接下来是json-libhttp://json-lib.sourceforge.net/
        这里面json-lib是比较老牌的解析技术了,使用起来也很方便,在使用上来说三者都很方便。

        

点击(此处)折叠或打开

  1.     //10000000,1498,733ms
  2.     @Test
  3.     public void testComplex() throws IOException {
  4.         long start = System.currentTimeMillis();
  5.         String content = "";
  6.         JsonConfig config = new JsonConfig();
  7.         config.setJavaIdentifierTransformer(new JavaIdentifierTransformer() {
  8.           @Override
  9.           public String transformToJavaIdentifier(String str) {
  10.             char[] chars = str.toCharArray();
  11.             chars[0] = Character.toLowerCase(chars[0]);
  12.             return new String(chars);
  13.           }
  14.         });
  15.         config.setRootClass(Behaviour.class);
  16.         
  17.         while ((content = reader.readLine()) != null) {
  18.             //System.out.println(content);
  19.             Behaviour behaviour = (Behaviour)JSONObject.toBean(JSONObject.fromObject(content,config), Behaviour.class);
  20.             //System.out.println(behaviour.getEvents().size());
  21.         }
  22.         System.out.println((System.currentTimeMillis() - start) + "ms");
  23.     }

        结果出来了,json-lib耗时1498.733秒,jackson在大数据的表现相当突出。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
google Gson学习笔记及与json-lib的比较
fastJson (ObjectMapper) 和 Gson 对象的初步使用呢(一)
Google Gson 使用简介
Java对象的序列化与反序列化
使用gson解析URL
Gson与Fastjson性能比较
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服