本节课,我们来讨论一下影响应用程序性能的不同方面,并针对性地提出优化应用程序性能的常用手段。
我们将从以下几个方面分别进行讨论:
- 优化网络性能
- 优化文件访问性能
- 优化内存使用性能
- 优化 CPU 使用性能
25.1 概述
性能优化是大多数软件产品都会经历的一个非常重要的阶段。随着硬件计算能力的提升,以及越来越注重产品迭代速度的今天,性能优化经常会被安排在项目的后期,作为产品正式上线之前的一项重要任务。
而对一些立项之初就非常注重运行性能的服务器产品,虽然会在架构设计时就把性能问题作为重要的设计目标,并且在产品的整个开发周期中,都把性能作为重要的测试和把控参数,但是在产品正式上线推出之前,对系统进行整体的性能测试和调优,仍然是一项不可或缺的重点任务。
性能优化不是一项简单的任务,相对于业务逻辑的开发,它需要开发者以更加接近机器实际运作的思考方式,更快、更准确地定位到问题所在,并提出优化方案。
25.2 网络性能优化
大多数应用程序在网络性能方面的需求,通常可以归结为两个方面:
- 尽量低的网络延迟
- 尽量高的吞吐量
下面我们从软件设计的层面,分别讨论可用的优化方法。
25.2.1 优化网络延迟
网络延迟的来源有很多,最常见的是连接延迟、首字节延迟和数据往返延迟。
连接延迟来源于数据传输之前建立网络连接需要的时间。通常来说,TCP 的连接延迟要大于 UDP,因为 TCP 建立连接时要经过三次握手的过程,而且,在服务器负载特别高的情况下,如果