您的位置:首页 > 其它

1.3 基本调优策略和手段

2013-11-25 23:48 288 查看


1.3 基本调优策略和手段

存在性能问题的系统,十之八九是由某一系统瓶颈导致的。只要找到该性能瓶颈,分析瓶颈的形成原因,对症下药,使用合理的方法解决系统瓶颈,就能从根本上提升性能。所以,系统性能优化的最主要目的就是查找并解决性能瓶颈问题。但同时值得注意的是,性能优化往往会涉及对原有的实现进行较大的修改,因此,很难保证这些修改不引入新的问题。所以,在性能优化前,需要对性能优化的目标、方法进行统筹的安排。

1.3.1 优化的一般步骤

对软件系统进行优化,首先需要有明确的性能目标,清楚地指出优化的对象和最终目的。其次,需要在目标平台上对软件进行测试,通过各种性能监控和统计工具,观测和确认当前系统是否已经达到相关目标,若已经达到,则没有必要再进行优化;若当前系统性能尚未达到优化目标,则需要查找当前的性能瓶颈。

可能成为性能瓶颈的因素有很多,比如:磁盘I/O、网络I/O和CPU。当找到性能瓶颈后,首先需要定位相关代码,确认是否在软件实现上存在问题或者优化空间。若有,则进行代码优化;若已经没有代码优化空间,则需要考虑进行JVM层、数据库层或者操作系统的优化。甚至,可以考虑修改原有设计,或者提升硬件性能。

当优化完成后,需要在目标平台上进行确认测试。若达到性能目标,则优化过程结束;若没有,则需要再次查找系统瓶颈,以此反复,如图1.6所示。





1.3.2 系统优化注意事项

软件的性能优化虽然能提升软件的性能,但是优化过程往往伴随着一些风险和弊端。比如,为了优化某一段代码的实现,就需要重写原有的算法,而这就很可能引入新的Bug。重新实现新的功能模块也同时意味着需要重新对其进行完整的功能性测试,使优化前所做的测试工作变得毫无意义。而且,优化后的代码与优化前的代码相比,可能会比较晦涩难懂,从一定程度上影响了系统的可维护性。因此,软件优化需要在软件功能、正确性和可维护性间取得平衡,而不应该过分地追求软件性能。

在进行优化前,必须要有明确的已知问题和性能目标,决不可为了"优化"而"优化"。在动手前,必须知道自己要干什么。任何优化都是为了解决具体的软件问题,如果软件已经可以正常工作,在性能问题没有暴露前,只是凭着主观臆断对某些模块进行性能改进,从软件规范化开发的角度上来说,是非常冒险的。因为修改后的新代码没有经过完整的测试,软件质量就没有保障。而且,优化后的性能提升幅度可能也不足以让开发者如此费尽心机。因此,在进行软件优化时,必须要进行慎重的评估。

注意:性能调优必须有明确的目标。不要为了调优而调优,如果当前程序并没有明显的性能问题,盲目地进行调整,其风险可能远远大于收益。

1.4 小结

通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标。此外,本章还较为详细地介绍了与性能调优相关的两个重要理论--木桶原理以及Amdahl定律。

根据木桶原理,系统的最终性能总是由系统中性能最差的组件决定的。因此,改善该组件的性能对提升系统整体性能有重要的作用。而根据Amdahl定律,可以知道只是增加处理器数量对提升系统性能并没有太大实际意义,必须同时提高程序的并行化比重。

本章还简要介绍了在软件开发和维护过程中可以进行性能优化的各个阶段。比如,在软件的设计阶段,就需要选用合理的软件结构和性能组件;在编码阶段,需要提高代码的执行效率;对于Java应用程序,在系统的运行期,还需要设置合理的JVM虚拟机参数;同时,优化数据库和操作系统也对系统整体性能有直接影响。

在本章最后,简要介绍了性能优化的一般步骤和注意事项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: