项目优化手段分享——孔德芳大牛defonds.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目优化手段分享 2014年12月 性能优化(Optimize):简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。 性能问题永远是永恒的主题之一,而优化则更需要技巧。 性能优化 VS 性能设计 性能优化的几个层次 几个性能分析工具 如何分析性能瓶颈 性能优化的一些手段 讯汇通优化案例分析 是否需要优化? 关于性能设计 Q A 大纲 一、性能优化vs性能设计 性能优化,通常是在现有系统和代码基础上所做的改进,属于产品生命周期的后续几个阶段(假设产品有多个生命周期)。性能优化不是重新设计,性能优化是以现有的产品和代码为基础的,而不是推倒重来。 性能设计是从正向考虑问题:如何设计出高效,高性能的系统。 性能优化是从反向考虑问题:在出现性能问题时,如何定位和优化性能。 性能设计考验的是开发者正向建设的能力,而性能优化考验的是开发者反向修复的能力。两者可以互补。 二、性能优化的几个层次 系统层次:关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外开销;如何降低耦合度 …系统层次的优化比较粗,但每一次的改进所带来的效果,也许比算法、代码层次花很高代价带来的效果都要高。系统层次的前提是对系统现有业务和未来的把握。 算法层次:用更高效的算法替换现有算法,而不改变其接口。 代码层次:代码层次的优化是最直接,也是最简单的,但前提是要对代码很熟悉,对系统很熟悉。 二、系统优化的几个层次 本期主要侧重于算法层次和代码层次的优化 三、几个性能分析工具 强大的CPU和内存的剖析工具 - yourkit 三、几个性能分析工具 多线程监控分析工具 - VisualVM 三、几个性能分析工具 热点监控工具 - JProfiler 二、业务模式 四、如何分析性能瓶颈 分析有哪些函数单次执行时间长 分析有哪些函数调用次数过多 分析有哪些函数总执行时间长 五、性能优化的一些手段 使用高效编码方式从语法上提高程序性能 比如,逻辑运算使用短路或、短路与; 比如, String vs StringBuffer 用String:如果确定这个String不会再变的话,这将会减少运行开销提高性能; 用StringBuffer:如果确定这个String肯定会变的话,这将会减少运行开销提高性能。 比如,对于无状态对象无须使用带有安全机制的措施; 五、性能优化的一些手段 采用合理的数据结构和算法提高程序性能 这往往是决定程序性能的关键,本文后面会有相关案例介绍 五、性能优化的一些手段 采用多线程、缓存数据、延迟加载、提前加载、异步调用等手段,解决严重的性能瓶颈 本文后面也有相关案例介绍 五、性能优化的一些手段 合理配置虚拟机堆内存使用上限和使用率,减少垃圾回收频率 五、性能优化的一些手段 合理使用native代码 java毕竟是解释型语言,先天性的“不足”,在某些场景下其性能没法和C相比,比如加解密、图形处理、视频解析 五、性能优化的一些手段 合理配置数据库缓存类型和优化SQL语句加快读取速度,适当时候考虑索引优化 SQL优化、索引优化本文后面也有相关案例介绍 五、性能优化的一些手段 使用工具分析性能问题,找出性能瓶颈 六、优化案例一 六、优化案例一 优化分析 pays有10000条记录,内循环的for里bankNoList有13万条记录,也就是说这里我们需要对比1302190000(13亿!)次。这个算法太贵。 优化方案 使用哈希寻址对比。把13万记录放在哈希容器里,对比的时候是哈希寻址对比,而不是链表循环对比。这里我们直接使用了jdk原生态的哈希map,key-value只用了key,如果有时间的话可以自己去写一个类似的哈希容器。 六、优化案例一 优化后的代码参考 六、优化案例二 ListLinkBankNo bankNoList = linkBankDao.queryLinkBankNoAll(1); 优化分析 这个基本上把link_bank_no表全搬过来了(大约有13万条数据)。这个建议和上边一样:想办法尽量避免这种sql。 优化方案 像这种内容不怎么变动、而又使用频率比较高的记录,没必要每一笔付款请求都重新查询一次,可以考虑使用内存缓存预加载策略; 而且也没必要全表复制,因为我们只关心其中的一两个字段。 六、优化案例三 六、优化案例三 优化分析 For循环里边反复操作数据库,一万条数据的话,也就操作了10000次。给数据库带来压力,造成速度缓慢。 优化方案 PayAntharDao的updateTranState方法改为批量更新,一条sql语句搞定。 六、优化案例三 优化后的代码参考 六、优

文档评论(0)

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

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

1亿VIP精品文档

相关文档