网站大量收购独家精品文档,联系QQ:2885784924

1000行订单审批推日计划效率优化实践.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1000行订单审批推日计划效率优化实践

优化思路1:代码重构 以前因为历史原因造成的反复调用,循环调用,尽可能将这部分业务逻辑挪到循环外调用 实际的优化工作 以前业务执行步骤 for (int i = 0; i = 1000; i++) { 数据筛选(过滤劳务折扣类存货) 部分业务逻辑 查发运组织 申请单据号 } ……… 优化后业务执行步骤 数据筛选,缓存调用,减少1000次读库操作 部分业务逻辑 查发运组织,一次加载,减少999次读库操作 for (int i = 0; i = 1000; i++) { 申请单据号 } 优化前时间:3’44”75 优化后时间:1’40 推荐执行公式方法(无需中间变量): SuperVOUtil.execFormulaWithVOs(VOs, new String[] {}, null); 优化思路2:具体问题具体分析 分析代码执行重大耗时点,向耗时大户要时间 实际的优化工作 打时间戳分析 protected void showMethodTime(String methodName, long begintime) { long lTime= System.currentTimeMillis() - begintime; System.out.println(========================执行+ methodName+ 占用的时间为:+ (lTime / 60000)+ 分+ ((lTime / 1000) % 60)+ 秒+ (lTime % 1000)+ 毫秒===============); } 具体分析执行过程: 执行pushsavestart占用的时间为:0分0秒0毫秒 执行待保存数据筛选占用的时间为:0分2秒500毫秒 执行申请单据号占用的时间为:0分34秒187毫秒 … 效率分析: 1。公式缓存带1000个存货属性,待保存数据筛选,耗时2.5秒 2。保存前准备数据,耗时0.3秒 3。查询所有发运组织的属性耗时0.2秒 4。申请1000个单据号耗时31秒 5。1000行修改可用量6秒 6。1000行日计划保存23秒 7。1000行回写订单的日计划数量23秒 共耗时1分23秒 优化思路3:从实际业务角度出发 通过预先估计某些表或某些业务数据的大小来达到优化目的. 申请1000个单据号耗时31秒的优化 以前为何循环调用? 每一行表体公司不一样,需申请相应公司的单据号 优化依据: 从实际业务角度出发估计公司的数量一般不会超过100个,而做在同一张订单的公司多公司销售的订单,公司数量不会超过10个. 优化措施: 预先统计公司数量,每个公司申请的单据号数量,统一申请 优化后耗时: 最多不超过1秒,优化掉30秒 最终优化结果 订单1000行不同存货审批推1000个发运日计划 优化前3’44”75 优化后4634 优化后的注意事项 优化后代码大量采用批处理,通常不再是原来按每一步业务逻辑来处理的顺序,业务规则可能被打乱,已经不再具有原来的可读性,需补齐注释或备份优化前的代码,以提高代码的维护性。 最后的思考 优化永无止境,随着业务的增加,应随时进行代码的优化。 不要轻易说我的代码不再可能优化了。 个人感觉单个业务逻辑处理,1000行超过20秒的都存在优化的可能性。 THE END Thanks! www . ufsoft . com 1000行效率优化实践 演讲人 :孙凯歌 时 间 : 2005.5.12 www . ufsoft . com

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档