2019独角兽企业重金招聘Python工程师标准>>>

fastjson确实很厉害(毕竟是阿里大牛写的),在逻辑解析的快捷上可以坐到很方便的搞定,这样直接就直接缩小的很多的工作量,并且代码结构很清晰。

基于以上摘要内容,我就闲着无聊比较了一下。代码如下

 public void testFastJson(){String jsonString =   "[\n" +"{\n" +"orderId: 2964,\n" +"code: \"2800001296442\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 22400,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-28 18:28:42\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"小黄瓜,无籽瓜\"\n" +"},\n" +"{\n" +"orderId: 2940,\n" +"code: \"2700001294044\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 650,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-27 20:05:44\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"两个装柠檬\"\n" +"},\n" +"{\n" +"orderId: 2913,\n" +"code: \"2600001291319\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 72500,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-26 20:56:19\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"韩国梨,纸箱白心柚,小黄瓜,野生苹果\"\n" +"},\n" +"{\n" +"orderId: 2891,\n" +"code: \"2500001289120\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 9000,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-25 21:06:20\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"哈密瓜(4个装)\"\n" +"},\n" +"{\n" +"orderId: 2865,\n" +"code: \"2400001286555\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 81100,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-24 19:57:55\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"西梅,哈密瓜(4个装),云南蜜桔,小黄瓜,木瓜,无籽瓜\"\n" +"},\n" +"{\n" +"orderId: 2839,\n" +"code: \"2300001283923\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 69000,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-23 20:50:23\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"哈密瓜(4个装),有机红心柚,凯特芒果\"\n" +"},\n" +"{\n" +"orderId: 2820,\n" +"code: \"2200001282039\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 37500,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-22 20:43:39\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"马奶提,哈密瓜(4个装),小黄瓜\"\n" +"},\n" +"{\n" +"orderId: 2792,\n" +"code: \"2100001279242\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 65500,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-21 22:11:42\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"菲律宾凤梨,辽宁葡萄,小黄瓜,野生苹果\"\n" +"},\n" +"{\n" +"orderId: 2773,\n" +"code: \"2000001277334\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 68800,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-20 22:14:34\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"菲律宾香蕉,无籽瓜,野生苹果\"\n" +"},\n" +"{\n" +"orderId: 2737,\n" +"code: \"1900001273702\",\n" +"radiateCenterId: 1,\n" +"userId: 7,\n" +"totalMoney: 101000,\n" +"status: 7,\n" +"payStatus: 2,\n" +"sendStatus: 2,\n" +"payway: 1,\n" +"gmtCreate: \"2015-10-19 21:35:02\",\n" +"shopName: \"水果无忧\",\n" +"itemsName: \"韩国梨,猕猴桃金果\"\n" +"}\n" +"]";//这是待解析的json字符串。long t1,t2;t1 =System.currentTimeMillis();List<MyOrderBean> list = JSONArray.parseArray(jsonString, MyOrderBean.class);t2 =System.currentTimeMillis();logError("fastjson  = " + (t2 - t1));}

以及自己的解析代码:

public class OrderHelper {public static long t1,t2;public static List<MyOrderBean> getOrderList(JSONObject object){t1 =System.currentTimeMillis();JSONArray array = JsonUtil.getJsonArray(object, "data");List<MyOrderBean> list = CollectionUtil.newArrayList();for (int i = 0; i < array.length(); i++) {try {JSONObject obj = JsonUtil.getJsonObject(array.get(i));list.add(getOrder(obj));} catch (JSONException e) {e.printStackTrace();}}t2 =System.currentTimeMillis();LogUtil.logTagE("my useTime = " + (t2 - t1));return list;}public static MyOrderBean getOrder(JSONObject obj){MyOrderBean orders = new MyOrderBean();orders.setId(JsonUtil.getInt(obj, "orderId", 0));orders.setCode(JsonUtil.getString(obj, "code", ""));orders.setGmtCreate(JsonUtil.getString(obj, "gmtCreate", ""));orders.setItemName(JsonUtil.getString(obj, "itemsName", ""));orders.setItemNum(JsonUtil.getInt(obj, "itemNum", 0));orders.setPayWay(JsonUtil.getInt(obj, "payway", 0));orders.setShopName(JsonUtil.getString(obj, "shopName", ""));orders.setStatus(JsonUtil.getInt(obj, "status", 0));orders.setShopId(JsonUtil.getInt(obj, "shopId", 0));orders.setTotalMoney(PriceUtil.showPriceYang( JsonUtil.getDouble(obj, "totalMoney", 0.0d)));orders.setPayStatus(JsonUtil.getInt(obj, "payStatus", 1));orders.setSendStatus(JsonUtil.getInt(obj, "sendStatus", 1));return orders;}
}

运行结果如下:

结论如上、差距比较大。。。看到这个结果我就心安了,不说了我要去嘲讽我同学了。

  我要声明,我没有讽刺fastjson,我必须承认fastjson是目前json解析界特别强大的类库,关于为什么可以移步到这个博客http://www.oschina.net/question/54100_30041

只是总结了一下我不用fastjson的原因如下:

每个项目,服务端的数据是多变的,根据不同的界面,服务端传回的数据是不一样的,这样就导致你整个实体里面可能有很多属性不是当前页面用得到的,fastjson的解析原理是通过反射找到所有get方法,于是再逐个比较解析。这可能是一个耗时长的原因,毕竟有很多无用的属性,fastjson是越来越快的,也就是说几十条几百条数据是看不出来结果的,他的性能优化真正是体现在大数据量的处理。本篇比较是不具有权威性和代表性的,毕竟数据量小,只是记录娱乐性的。所以希望大家结合使用情况选择使用,另外每次的开源库最好是使用最新版本的,比如fastjson1.1和1.2的解析速度差距也是很大的。

习惯自己写解析类,更加方便精确的针对每一个实体做解析,主要也是我自己写习惯了,闭着眼睛也知道怎么写,不过我这样有点小不方便,就是换一家公司之后,新的网络规范必须要重新适应,fastjson使用频率广泛我想也是有这点原因在里面。毕竟不用动脑直接一波流。

====================================分割线================================

   

    好久没写博客了,毕业两年来,做合伙人这么长时间,经历了很多艰难的时期,挺过了好几个,什么都干过,运营,产品,市场地推,物流跟车,仓库分拣,累的不要不要的,技术成长却很少,看书时间减少,个人安排时间不足,上周末跟网易的同学聊天扯淡,真心羡慕一心写代码的生活。大企业不管有多么多的诟病沉珂,但是不可否认那里聚集了很多各自领域都很优秀的人才,圈子决定眼界,至少技术上可以帮助更加快速成长,这是我在预感项目失败公司清算的时候自己应该怎么选择的感悟。最近几个月是公司从未有过的艰难时期,这一次,可能坚持不下去了。毕竟太年轻,积累太少,也因为年轻,可以多尝试几条路。

    很多年轻人(我自己也是)不喜欢大公司的环境,不习惯大公司的相处方式,整天吐槽臃肿不堪甚至浪费资源的公司结构和制度网上一直在讨论的,去大公司还是去小公司,大神们有无数的结果和比较,我小小平凡人一枚就不在此浪费字数了。你选择什么样的工作,什么样的环境,什么样规模的平台,优劣都有, 其实在我看来都无所谓,别忘了自己还年轻,走错路可以回头,就算不想回头也可以继续往下走。所以只要肯走,没什么可怕的。

    共勉。

转载于:https://my.oschina.net/halfront/blog/523585

小测一下fastjson的速度(纯娱乐)相关推荐

  1. NAS组建日记(一):来块大硬盘先—HGST 10TB NAS硬盘开箱小测

    NAS组建日记(一):来块大硬盘先-HGST 10TB NAS硬盘开箱小测 从立冬到正月的数码 18-03-2618:54 传统的机械硬盘的性能已经远远的被SSD固态硬盘甩在了后面,不过大数据时代有着 ...

  2. 【原创】基站定位小测

    [原创]基站定位小测 Author: chad Mail: linczone@163.com 本文可以自由转载,但转载请务必注明出处以及本声明信息. 定位方法: 1.首先要有一块GPRS模块(本次采用 ...

  3. 北航操作系统课程-20200302课堂小测-操作系统引论

    2020-03-02-课堂小测-操作系统引论 北京航空航天大学计算机学院-2020春操作系统课程 以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平 ...

  4. 初级前端小程序项目加载速度优化

    这份文字是根据近期团队做来问丁香医生 SPA 和 丁香医生小程序 加载速度优化的经历整理而成. 效果 古人有一句话叫做:治感冒看疗效.既然是关于速度优化的,我们就先来看一下优化的效果. 来问丁香医生 ...

  5. 北航操作系统课程-20200402课堂小测-调度算法

    2020-04-02-课堂小测-调度算法 北京航空航天大学计算机学院-2020春操作系统课程 以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限 ...

  6. android华为mate9适配,写在P10发布前:HUAWEI 华为mate9 使用小测

    写在P10发布前:HUAWEI 华为mate9 使用小测 2017-02-23 20:21:42 40点赞 24收藏 71评论 对于华为mate系列我是从mate7开始就关注的,当时mate7刚出的时 ...

  7. 【评分】团队作业-随堂小测(同学录)

    [评分]团队作业-随堂小测(同学录) 总结 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次作业分数 本次作业 日不落战队 涉及的训练环境较其他组多(在博客中体 ...

  8. 随堂小测app(nabcd)

    N 现在,老师想要组织测验,需要提前印制试卷,费时费力,考勤采取传统的点名的方式,过程繁琐且结果水分大. 而随堂小测app通过在线答题,智能定位可以帮助老师掌握学生对知识的掌握程度,了解学生的到客情况 ...

  9. 20180110小测

    于是我们今天有迎来了一次愉悦的小测. 早晨签到两发大吉,还有一个宜参加模拟赛?buff--. 然后看到了一个暴力分十分良心,怕不是正解不是给人写的了,buf--. 上午上了三节课,书丢了,下课提前走被 ...

最新文章

  1. windows系统中常见的环境变量有哪些
  2. Redis,传统数据库,HBase,Hive区别联系
  3. Lucene学习总结之六:Lucene打分公式的数学推导
  4. OS / 进程和线程的区别和联系
  5. Tortoise SVN使用方法,简易图解
  6. 中国豪华的政府大楼VS破学校
  7. python decode unicode encode
  8. 计算机应用基础课程整体设计说课视频,计算机应用基础说课稿
  9. JS---Math.Random()*10--[0,10)随机变颜色
  10. Java——删除文件
  11. 遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
  12. Android 获取设备SN号
  13. 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用·高级篇
  14. 一个屌丝程序猿的人生(五十)
  15. JESD204B参数及时钟关系
  16. 人工智能会为远程学习带来春天吗?
  17. Java篇 - 四种引用(Reference)实战
  18. 申宝股票-A股长期向好趋势未
  19. 尘封多年的期权,价值千万...
  20. UML(系统分析与设计核心总结)+期末考试例题分析

热门文章

  1. HTTP协议无状态中的 状态 到底指的是什么?
  2. 选型必看:RabbitMQ 七战 Kafka,差异立现
  3. JVM 有 Full GC,为什么还会出现 OutOfMemoryError呢?
  4. 你真的会写单例模式吗?
  5. 搞懂机器学习的常用评价指标!
  6. 使用Pytorch从头实现Canny边缘检测
  7. KDD 2021多个奖项出炉:斯坦福博士摘得学位论文奖,北航校友胡侠获新星奖
  8. 清华理工男,跳了7年舞,来华为一年当了PL,这什么小哥哥
  9. 操作系统学习:Linux0.12文件异步IO
  10. 最长不含重复字符的子字符串