第1章 Java性能调优概述
1 性能概述
性能的参考指标
- 执行时间
- CPU时间
- 内存分配
- 磁盘吞吐量
- 网络吞吐量
- 响应时间
木桶原理与性能瓶颈
系统的最终性能取决于系统中性能表现最差的组件。为了提升系统的整体性能,必须对系统中表现最差的组件进行优化。
最有可能成为系统瓶颈的计算资源:
- 磁盘IO
- 网络操作
- CPU
- 异常
- 数据库
- 锁竞争
- 内存
Amdahl定律
加速比=优化前系统耗时/优化后系统耗时
设加速比未Speedup,串行化程序的比重为F,CPU的数量为N,则有
根据Amdahl定律,使用多核CPU对系统进行优化,优化的效果取决于CPU的数量及系统中串行化程序的比重。CPU数量越多,串行化比重越低,则优化效果越好。仅提高CPU数量而不降低程序的串行化比重,无法提高系统性能。
2 性能调优的层次
设计调优
软件设计和架构对软件整体质量有决定性的影响,设计调优对系统性能的影响是最大的。
进行设计优化时,设计人员必须熟悉常用的软件设计方法、设计模式、基本性能组件和常用的优化思想。
代码调优
软件调优是在软件开发过程中或者软件开发完成后,软件维护过程中进行的对程序代码的改进和优化。需要开发人员熟悉相关语言的API和对算法和数据结构的灵活使用。
JVM调优
在软件开发后期进行,需要对JVM的运行原理和基本内存结构有一定的了解。
数据库调优
操作系统调优
3 基本调优策略和手段
系统性能优化的最主要目的是查找并解决性能瓶颈问题。
优化的一般步骤
首先要有明确的目标,清楚优化的对象和最终目的;其次,通过各种性能监控和统计工具对软件进行测试;若未达到优化目标,则需要查找当前的性能瓶颈。
系统优化的注意事项
软件优化需要在软件功能、正确性和可维护性之间取得平衡,不应该过分地追求软件性能。不要为了调优而调优。