项目的性能遇到了问题,时间大概是客户期望的100倍以上,除了做系统的水平扩展外,在单机运行的性能也需要有比较大的优化.
我们的优化步骤:
- 设计测试场景,准备测试数据.
- 找一个性能测试工具, 根据不同的测试数据分别进行测试,记录运行时间.
- 查看运行后的测试报告,发现有几个地方使用了反射机制来生成对象,进行了修改,使得一个方法的调用时间从平均9.2ms降到了6.5~7.5ms之间.
- 这个方法的时间虽然有所改进,但是由于调用的数量巨大,仍然占用了大多的运行时间.查找该方法所有被调用的地方,将可以更换的地方进行调整.其实这是一个抽象类的工厂方法,可以通过调用它来生成相应的子类.但是我们发现在各个子类内部,也就是可以直接使用new方法的地方,也有很多对这个工厂方法的调用.应该是一个思维惯性的问题.
- 对传入的数据预先使用正则表达式进行过滤.当然,这种优化只能针对传入的数据大多不能够匹配的情况.
- 对数据库的调优,这一部分是由客户去做的.
- 加大使用多线程的力度,这是我们下一步需要去试验的地方.项目中其实已经使用了多线程,并且曾一度让运行速度达到了5倍以上的增长.我们现在想要做的是在现有的基础上再加一层多线程的处理,让每一个线程再去生成多个线程.可行性待定.
这是我第一次参加性能优化的工作,不是很专业,跟着大哥摸索着去查找问题,解决问题.
做这种活,得有点信念.