小测一下fastjson的速度(纯娱乐)

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://www.oschina.net]

时间: 2024-11-08 18:22:44

小测一下fastjson的速度(纯娱乐)的相关文章

清明离家在外试试网络祭祀 勿变成纯“娱乐”假期

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在祭祀网站可以祭拜亲人 在"祭酒"页面上,选择不同的酒献给亲人 在网站上还能祭拜一些逝去的名人 随着网络的普及,网络也渐渐地改变着人们的生活方式.又是一年清明时,不少人选择在网上的纪念堂怀念亲友.也有人认为,传统祭祀在表达情感上要更真切一些. 献花 上香 祭酒网络祭祀一个都不少 网络祭祀是利用网络进行祭祀,怀念逝去烈士.战

360软件小助手实用小测 一键加速

360软件小助手一直"桌面党"们的最爱,每一个新功能都立足于给用户带来更好的电脑使用体验.如新增的"一键加速功能",鼠标轻轻一点就能让系统进入最佳状态,帮用户轻松实现尽情游戏.疯狂秒杀.高效办公的各种效果.接下来,让我们体验下它的独到之处. 图1 360软件小助手新增"一键加速"功能 使用前的准备:首先需要将360安全卫士升级到最新版本,鼠标轻移至Windows键旁的360软件小助手图标后,点击后即可发现新增的"一键加速"按钮

百度PC浏览器 Firefox Chrome IE 小测对比

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度浏览器1.2 beta版于今日发布了,做为一款百度精心打造的浏览器,很多网友问起,百度浏览器是什么内核的,这个在早先在测试1.0版的时候,早已经有了答案,百度浏览器使用的是IE内核,这样可能是为了照顾国内更多的只兼容IE浏览器的应用吧.为了尝鲜,今天小编就专门下载了百度浏览器1.2 bata版,并和其他浏览器进行了一些细小的测试对比. 1

主流看图软件小测 谁能完美支持TIFF格式

在印前设计中,TIFF格式文件应用十分广泛.因为印前设计软件的丰富,支持输出的格式也越来越多,由于跨平台.多软件融合制作以及文件的复杂性,需要解决输出时常出现的一些问题;而TIFF格式即可起到设计与印刷的桥梁作用,从而提高制作和输出所需要的效果.那么,对于TIFF格式文件的浏览,目前各主流看图软件的支持又到底如何呢?今天小编即带来关于此问题的一个小评测. 一.评测用到的看图软件 评测选取的是目前比较常见的几款看图软件,包括ACDsee.美图看看.Picase.QQ影像以及系统自带的Windows

Windows Serve 2008 R2 RTM性能小测报告

终于耐不住了, 于是废掉了一个才激活的Windows 7序列号后还是把机器换 成了2008 R2.安装完系统,激活,安装软件, 然后呢,整理一下 磁盘碎片就开始测试性能了. 硬件配置如下: CPU: Xeon E5345 ×1 主板: Intel 5000x 内存: 4G DDR2 667 FB-DIMM 显卡: Quadro NVS 290 磁盘控制器:Adaptec 29320LP 磁盘: Fujitsu MAX3073NC 15k rpm (Dell Precision 490 末代高配加

四核心移动版Ivy Bridge小测

土耳其Donanimhttp://www.aliyun.com/zixun/aggregation/10763.html">Haber这次又给大家带来了Intel Ivy Bridge平台四核心Core i7-3610QM的一些测试成绩,该产品默认频率为2.30GHz,Turbo Boost频率为3.30GHz,拥有6MB L3缓存.DonanimHaber测试的是一台来自三星的笔记本,除Core i7-3610QM之外还采用了Kepler架构NVIDIA GeForce GT 650M移

小测XSP是否支持中文

早几天的时候一直对XSP支持中文的问题耿耿于怀.想重新编译XSP来修正对中文支持的问题,可惜功力不够只能够重新编译但编译后的exe却无法响应Http的访问.....(如果谁成功编译过请指教)于是今天想了想如果从数据库读来的数据包含中文情况会怎么样.于是随便写了个测试代码:数据库使用的是 MySql 4.1很简单的一个表+---------+-----------+-----------+| user_id | user_name | user_pass |+---------+---------

纯JavaScript 实现flappy bird小游戏实例代码_javascript技巧

前言: <flappy bird>是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红.2014年2月,<Flappy Bird>被开发者本人从苹果及谷歌应用商店撤下.2014年8月份正式回归APP STORE,正式加入Flappy迷们期待已久的多人对战模式.游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍. 正文: 接下来就是一步一步来实现它 步骤1:页面布局,这儿就不多说了,页面内容如下:

纠结的芒果台:娱乐还是新闻,这是一个问题

插图/刘志泉 终于,芒果等来了登顶的这一天.2009年,被昵称为"芒果台"的湖南卫视广告收入超过20亿,远超其他省级卫视几个数量级,成为仅次于央视的电视娱乐旗舰.芒果台与青海台深度合作,也即将开启湖南广电新一轮改革,让期待已久的芒果传媒浮出水面.但正如狄更斯一句被传炒得很烂俗的句子所说,对于芒果来说,这是最好的时代,也是最坏的时代.浙江.江苏.安徽的激烈同质化竞争下,李好.彭宇.李响已经加盟江苏卫视,而毕业招聘一只脚已经踏进湖南卫视大门的朱丹,最终成了浙江卫视娱乐节目的一姐.总局的61