对软件性能最普遍的理解就是软件处理的及时性。但其实,从不同的系统类型,以及不同的视角去讨论软件性能,都会有所区别。
文章目录
不同类型的系统,软件性能的关注点各不相同
- Web 类应用和手机端应用,一般以终端用户感受到的端到端的响应时间来描述系统的能;
- 非交互式的应用,比如典型的电信和银行后台处理系统,响应时间关注更多的是事件处理的速度,以及单位时间的事件吞吐量。
对同一个系统来说,不同的对象群体对软件性能的关注点和期望也不完全相同,甚至很多时候是对立的。这里,不同的对象群体可以分为四大类:终端用户、系统运维人员、软件设计开发人员和性能测试人员。
终端用户眼中的软件性能
从终端用户(也就是软件系统使用者)的维度来讲,软件性能表现为用户进行业务操作时的主观响应时间。具体来讲就是,从用户在界面上完成一个操作开始,到系统把本次操作的结果以用户能察觉的方式展现出来的全部时间。对终端用户来说,这个时间越短体验越好。
这个响应时间是终端用户对系统性能的最直观印象,包括了系统响应时间和前端展现时间。
- 系统响应时间,反应的是系统能力,又可以进一步细分为应用系统处理时间、数据库处理时间和网络传输时间等;
- 前端展现时间,取决于用户端的处理能力
从这个角度来看,你就可以非常容易理解性能测试为什么会分为后端(服务器端)的性能测试和前端(通常是浏览器端)的性能测试了。
运维人员眼中的软件性能
除了包括单个用户的响应时间外,更要关注大量用户并发访问时的负载,以及可能的更大负载情况下的系统健康状态、并发处理能力、当前部署的系统容量、可能的系统瓶颈、系统配置层面的调优、数据库的调优,以及长时间运行稳定性和可扩展性。
大多数情况下,系统运维人员和终端用户是站在同一条战线上的,希望系统的响应速度尽可能地快。但,某些情况下他们的意见是对立的,最常见的情况就是,系统运维人员必须在最大并发用户数和系统响应时间之间进行权衡取舍。比如,当有两套系统配置方案可以提供以下系统能力的时:
- 配置方案 A 可以提供 100 万并发访问用户的能力,此时用户的登录响应时间是 3 秒;
- 配置方案 B 可以提供 500 万并发访问用户的能力,此时用户的登录响应时间是 8 秒。
这时,从全局利益最大化角度来看,系统具有更大并发用户承载能力的价值会更大,所以运维人员一般都会选择方案 B。
目前,有些系统为了能够承载更多的并发用户,往往会牺牲等待时间而引入预期的等待机制。比如,火车票购票网站,就在处理极大并发用户时采用了排队机制,以尽可能提高系统容量,但却增加了用户实际感受到的响应时间。
软件设计开发人员眼中的软件性能
关注的是性能相关的设计和实现细节,这几乎涵盖了软件设计和开发的全过程。
在软件设计开发人员眼中,软件性能通常会包含算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性这五大方面。其中,每个方面关注的点,也包括很多。
算法设计包含的点:
- 核心算法的设计与实现