性能优化的心得
跟同事交流,之前上线的系统一两年之后,数据有两三千万
系统,没有办法很好的应对这么多的数据
这有两方面原因,一个是设计的时候没有怎么考虑数据量的问题
还有一个就是写代码的时候,并没有注意数据量的问题
不去关注数据量的问题,这可能是程序员自己的意识,还有可能是客户自以为的不用关注
客户说,我们的数据没有多少,你不用考虑那么多,以后这个系统用不用都还不好说
现在只要100万铺底数据,5000条交易数据能跑出来就行
听起来,100万铺底数据,5000条也不多,应该没有那么难吧
仔细分析客户说的就跟没有说一样
因为一开始铺底数据也不会有100万,也不会恰好100万里面正好有五千条让我们处理
100万 5000条数据只是一个点,过完这个点怎么办,系统真的就死掉了?
除了设计上性能瓶颈不好解决,写代码的时候多思考一些问题,还是能解决一些性能问题的
以下就是自己最近优化客户的销项报表的一个心得分享
- 首先优化什么时候最合适
这个问题首先我们应该培养自己的优化意思,写代码的时候,就去注意这方面的问题。
另一个就是,优先保证客户的需求是没有问题的,这个时候有性能问题的再去优化。
如果没有考虑功能是否开发完成就急着去优化,可能刚优化完,测出来了一些bug,又需要修改,当修改完之后,发现之前优化好的,需要再去优化,如此反复有可能会浪费很多必要的时间
- 优化到什么程度才算结束
1.优化到客户满意,但性能这个问题,客户的要求,我们也不一定能做的到
2.充分发挥计算机的计算能力,让CPU和内存的利用率达到极致,降低与IO,数据库,其他系统的交互次数
- 优化过程中要从哪些方面去考虑
- 利用计算机的多线程
- 不需要写文件的就不要写
- 只要内存不死,能在内存里面缓存的数据,就一次性放到内存里面,不要频繁访问数据库
- 不要在循环里面,操作数据库,除非数量大分批处理,需要释放内存的时候
- 减少不必要的代码,用更高效的算法
- 要借助性能测试工具,定量去分析
1.用的比较多的是DotTreace,能够比较好分析出来程序的性能瓶颈在哪里,可以看到每个方法具体执行时间,能够有方向的去优化
- 要多问问有经验的人,给些意见
1.向有经验的人请教,能够更快速的解决问题,有经验的人,也许可以给出更多合理的意见