本系列文章 是博主阅读 《java 程序性能优化》一书的总结。大部分内容来自此书。
性能参考指标
1,执行时间:一段代码从开始运行到结束运行,所使用的时间;
2,CPU时间:函数或者线程占用cpu的时间;
3,内存分配:程序在运行时占用的内存空间;
4,磁盘吞吐量:描述I/O的使用情况;
5,网络吞吐量:描述网络的使用情况;
6,响应时间:系统对某用户行为或者事件做出响应的时间。时间越少,性能越好。
木桶原理与性能瓶颈
核心思想是:一只水桶能盛多少水,不是取决于桶壁上最高的那块木板,而是最低的那块。
比如刚才说的6个性能指标,其中任何一个的性能非常差劲的时候,其他5项性能再好,系统整体性能依旧会被性能最差的那一项所影响。
性能调优的层次
1,设计调优,好的系统设计能对系统整体在质上有决定性的影响。
2,代码调优,需要对相关语言的api有比较深入的理解,从微观细节上对性能调优。
3,jvm调优,一般在系统开发的后期,或者软件开发的一个里程碑阶段进行,在一定程度上提升java性能。
4,数据库调优,数据库优化分3块,1,sql优化,2,表设计优化,3,数据库软件参数优化。
5,操作系统调优,作为软件运行的基础平台,操作系统对程序的性能也有较大的影响。
性能问题,十有八九是由某一种性能瓶颈(参考6个性能指标)导致的。找到它,对症下药,就能从根本上提升性能瓶颈。
优化的一般步骤,一般也就是上面所说的性能调优层次的顺序。
系统优化的注意事项:
软件优化需要在软件功能,正确性和代码可维护性之间取得平衡。
性能调优必须要有明确的已知问题和性能目标。不要为了调优而调优,如果当前系统没有明显的性能问题,盲目的进行性能调优,风险将远大于收益。