最近一段时间一直在搞系统性能优化,对于优化方向一直不知道从何入手,记录一下心得。
由于自己接触的一般都是系统响应延时问题,所以就按照这个模块进行叙述。
一般情况下 都会有这么几个步骤:
1. 对比法
版本对比:(前后版本对比)
对比之前版本和现在版本模块的性能是否有恶化,如果对比出来有性能急剧下降,请排除一下最近的代码修改哪个模块有影响。
同比项目模块对比:
如果有同步开发其他项目,可以对比一下其他项目的相同模块性能。如果模块有较大差距,请看一下相同模块的逻辑,配置和不同差异点。
2. log夹逼
这样做的目的就是一步一步增加打印,定位到浪费时间较长的模块。
一般当发现性能急剧下降的时候,可能到了项目后期,如果技术能力不是特别厉害的话,基本上很难一步定位到问题的所在点。这样可能会导致项目延迟交付的风险。所以在这个阶段需要用log打印的方式来定位到底是哪个模块耗时较长,增加log打印后,可以很清晰的从log的时间戳上看到耗时较长模块的时间差。
但是log 夹逼的方法不适用于那些打包时间较长的项目,也许你加log的地点没有花费时间很长,就又要重新打包出版本镜像做测试。
所以可以的话,请把怀疑的模块都加上log打印。以免每次发布版本浪费时间。
当然有仿真器的话,模拟仿真器可能时间很快,也是有利于模块问题定位。
如果可以设置断点的话,可能定位问题更快。
3. 我们性能优化的所有目的都是为了系统能及时响应。
如果你可以修改其他内容绕开耗时,当然也可以。至少是一种方案。
解决问题首先要有方法,不管是不是最直接的解决方法,至少在交付完成之前要有一个方案。