- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1000行效率优化实践
提纲 1000行效率优化前8名 整体印象 预定单的效率优化实践 调拨订单的效率优化实践 1000行效率优化前8名 单据表体1000行,属于1000个不同存货 整体印象 此数较多的循环,循环体内的细节处理是影响运行效率的关键(比如参数的读取应该在循环外) 公共代码的恰当处理会在比较大的范围内提高效率 客户端缓存的应用 SQL批量处理 公共公式工具的使用(缓存批量加载公式) 必要的时候将数据转移到循环体外批取,存储到临时表,作为数据准备 预定单的效率优化实践 接口被批量的调用,调用者应使用批量的方法以便减少前后台的调用 防止重复的计算 错误调用(接口没用批量的方法) For( int I=0;Iirows.length;I++){ ClientCacheHelper.getColValueBatch(getBillCardPanel(), irows[I], targetitemkey, tname, pkname, field, sourceitemkey); } 1000行耗时3分多 正确调用 ClientCacheHelper.getColValueBatch(getBillCardPanel(), irows, targetitemkey, tname, pkname, field, sourceitemkey); 减少前后台的交互 不正确的调用(判断存货是否折扣劳务类) 后台采用的循环调用,每个存货判断一次,效率极低 可能正确的调用(判断存货是否折扣劳务类) 前台需要加载存货信息,加载存货信息顺便加载存货是否劳务折扣类信息基本上不占用时间。 存货是否折扣劳务类不是随便改变的,如果要求实时性很高的话这种加载可能会有问题。(出现不一致的情况)如果这样的话,就需要在后台提供批量判断的方法 重复的计算 for (int i = 0; i getBillCardPanel().getRowCount(); i++) { getBillCardPanel().setBodyValueAt( new UFDouble(ndiscountrate), i, ndiscountrate); calculateNumber(i, e.getKey()); } 1000行耗时3分钟 避免重复计算(价格换算) boolean bisCalculate = getBillCardPanel().getBillModel() .isNeedCalculate(); getBillCardPanel().getBillModel().setNeedCalculate(false); for (int i = 0; i getBillCardPanel().getRowCount(); i++) { getBillCardPanel().setBodyValueAt( new UFDouble(ndiscountrate), i, ndiscountrate); calculateNumber(i, e.getKey()); } getBillCardPanel().getBillModel().setNeedCalculate(bisCalculate); 调拨订单的效率优化实践 声明 由于以前的代码里犯了很多常见的错误, 所以这次的效率优化才显得“成效明显”。 以下所谓的优化经验,都是老生常谈的 内容,望能给大家提个醒,别犯这样的 错误就是了。 问题分析 调拨订单行存货编辑后要做的事情: 从缓存里得到存货在出货/调出/调入公司的存货管理档案id,检查存货在出货/调出/调入组织是否存在 从缓存里获取存货的编码,名称,计量单位等信息 获得基本档案中的调拨关系,根据调拨关系上的价格规则进行询价 查询光标所在行存货的可用量和现存量 糟糕的是,原来的代码把前三步都放在循环里完成了…… 优化思路 减少数据库访问次数,减少远程调用次数, 尽量批量的获取信息 实际的优化工作 从缓存里批量得到存货的相关信息,如编码,名称,计量单位,销售计量单位等 一次得到所需的调拨关系。 查询存货现存量和可用量的远程调用次数合并为一次 往单据模板上放数的时候,先关掉合计的开关,等所有操作结束后再打开,并计算合计 谢谢! www . ufsoft . com 1000行效率优化实践 演讲人 :刘兵、袁红梅 时 间 : 2005.4.28 www . ufsoft . com
您可能关注的文档
最近下载
- 急诊与灾难医学-第二十二章 人为灾难的医学救援.pptx
- 030904《项目实施进度里程碑确认单》.xlsx VIP
- 治疗篇第六章骨伤科四肢病证推拿讲解.ppt
- 2025年广西机场管理集团有限责任公司人员招聘笔试备考题库及答案解析.docx
- 七年级下册英语课件Unit 3《Keep Fit》(Section A 1a-1d).pptx VIP
- 福特嘉年华说明书.pdf
- 医院医疗设备管理员及使用人员岗位职责.pptx VIP
- 江苏省小学科学实验知识竞赛题库附答案.pdf VIP
- 教科版(2017秋)四年级下册科学期末复习训练题(含答案).docx VIP
- 八年级下数学期中测试题(a卷).pdf VIP
文档评论(0)