引言
性能优化是很多 Java 程序员希望彻底掌握的一门技能。
很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验。
然而,很多人在设计技术方案或者编码时缺乏系统的、方法论级别的指导,导致想做性能优化时缺乏思路。
俗话说:“授人以鱼不如授人以渔”。
本文会先讲述性能优化方法论的主要思想源泉,性能优化的本质;然后分别讲述性能优化方法论的核心方法,以及性能优化的注意事项;讲解过程中会结合常见的 Java 中间件进行一些举例说明;最后,会结合具体的案例,帮助大家理解性能优化方法论如何落地。
希望大家能够通过本文的学习,可以掌握性能优化的核心思路,帮助大家从性能优化角度去学习 Java 中间件,去设计合理的性能优化技术方案。
性能优化的本质
那么性能优化的根本目的是什么?
不知道大家有没有想过为什么我们需要进行性能优化?
可能有些人会说:“性能不好”、“响应时间长”等等。
在我看来,性能优化是为了“解决良好的用户体验和资源的有限性之间的矛盾”。
首先,我们性能优化一般都是追求更快的响应速度,最终还是为了更好的用户体验。
在这里插入图片描述
这里所说的资源是广义上的资源,资源的限制性包括:资金成本的有限性,人力资源的有限性,服务器等硬件资源的有限性,时间的有限性(为了抢占市场,尽早上线的压力)等。
试想一下,如果资源是无限的,如开发周期很长,投入的人力很多,服务器资源充足,甚至服务器内存是无限大的,那么设计出来的产品可能就不需要再去优化。
出现性能问题的主要原因
往往一个产品在早期用户量较少不太容易出现性能问题。但随着业务的不断发展,性能问题就逐渐暴露出来。
导致性能问题的原因有很多,常见的原因有:项目工期紧,很多问题考虑不充分,先上再说,来不及做一个完善的方案
项目中使用了不合理的数据结构或算法
项目中串行处理耗时任务
架构设计不合理
性能优化的核心环节