您的位置:首页 > 编程语言 > Java开发

Java 程序性能优化《第一章》Java性能调优概述 1.3基本调优策略和手段

2015-12-07 20:12 639 查看

Java 程序性能优化《第一章》1.3基本调优策略和手段

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

1.3.1 优化的一般步骤

对软件系统进行优化,首先需要有明确的性能目标,清楚地指出优化的对象和最终目的。其次,需要在目标平台上对软件进行测试,通过各种性能监控和统计工具,观测和确认当前系统是否已经达到相关目标,若已经达到,则没有必要再进行优化;若当前系统系能尚未达到优化目标,则需要查找当前的性能瓶颈。
可能成为性能瓶颈的因素有很多,比如:磁盘I/O、网络I/O、和CPU。当找到性能瓶颈后,首先需要定位相关代码,确认是否子在软件实现上存在问题或者优化空间。若有,则进行代码优化;若已经没有代码优化空间,则需要考虑进行JVM层、数据库层或者操作系统的优化。甚至,可以考虑修改原来的设计,或者提升硬件的性能。
当优化完成后,需要在目标平台上进行确认测试。若达到性能目标,则优化过程结束;若没有,则需要再次查找系统瓶颈,以此反复,如图1.6所示。



1.3.2 性能优化注意事项

软件的性能优化虽然提升软件的性能,但是优化过程往往伴随着一些风险和弊端。比如,为了优化某一段代码的实现,进需要重写原有的算法,而这就很可能引入新的Bug。重新实现新的功能模块也同时意味着需要重新对其进行完整的功能性测试,是优化前所做的测试工作变得毫无意义。而且,优化后的代码与优化前的代码相比,可能会比较晦涩难懂,从一定角度上影响了系统的可维护性。因此,软件优化需要在软件功能、正确性和可维护性间取得平衡,而不应该过分的追求软件性能。
在进行软件优化前,必须要有明确的已知问题和性能目标,决不是为了 “ 优化 ” 而 “ 优化 ” 。在动手前,必须要知道自己要干什么。任何优化都是为了解决问题,如果软件已经可以正常工作,在性能问题没有暴露前,只凭着主观臆断对某些模块进行性能改进,从软件规范化开发的角度上来说,是非常冒险的。因为修改后的新代码没有经过完整的测试,软件质量就没有保障。而且,优化后的性能提升幅度可能也不足以让开发者如此费尽心机。因此,在进行软件优化时,必须要进行慎重的评估。

PS:性能调优必须要有明确的目标。不要为了调优而调优,如果当前程序并没有明显的性能问题,盲目的进行调整,其风险可能远远大于收益。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: