性能之道:分布式系统全栈性能优化
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 软件性能的一般含义

性能是软件的一种非功能特性,可以定义为“软件与其环境交互以获得价值和避免损失的程度”。它不仅关注软件是否能够完成特定的功能,还关注软件在完成该功能时展示出来的时空属性。换句话说,性能就是在空间资源和时间资源有限的条件下,表征软件是否能够正常工作的指标。软件的性能是建立在软件所实现的功能基础之上的,软件的功能关注的是软件做了什么,软件的性能关注的是软件做得如何。因此,性能是对综合资源和速度的考量,对“空间”和“时间”都具有高敏感度。

狭义上,软件性能指的是在尽可能少地占用系统资源的前提下,尽可能提高运行速度;广义上,软件性能指的是软件的质量属性,包括正确性、可靠性、易用性、安全性、可扩展性、兼容性和可移植性等。软件的性能是对整个软件的整体考量,既包括所有的硬件组件和整个软件栈,也包括所有数据在流动路径上和软硬件上所发生的事情。软件性能取决于各种资源的平衡,这类似于木桶理论,某种资源的耗尽会严重阻碍软件的性能。

软件的性能可以通过客观指标与主观感受来描述和评价。从客观的角度来看,可以用性能指标来描述软件的性能。而从主观的角度来看,由于软件的性能是由人来感受的,不同的人对于同样的软件可能会有不同的主观感受,这与软件的用户体验相关。

ISO 9241-210:2019中这样描述用户体验:人们对使用或期望使用的产品、系统或者服务的认知、印象和回应。用户体验是主观的,所以会更注重实际应用效果。ISO在定义的补充说明中有如下解释:用户体验是指用户在使用一个产品或系统之前、使用期间和使用之后的全部感受,包括情感、信仰、喜好、认知印象、生理和心理反应、行为、成就等各个方面。因此,许多因素都可以影响用户体验,这些因素被分为三大类:使用者的状态、系统性能及环境。其中,系统性能被认为是软件产品自身影响用户体验的关键因素。不同的人关注软件性能的视角也不同。对使用软件的用户而言,更关注及时性;对软件服务或软件产品提供者而言,既关注时间因素,又关注空间使用率,是多种因素的权衡。

因此,软件的性能是指软件在运行过程中表现出来的时间效率、空间效率与用户需求之间的吻合程度。如果时间效率、空间效率与用户的心理期待一致,或者能够达到用户的具体要求,那么用户就会认为这款软件的性能符合要求;反之,用户会认为这款软件的性能有问题,或者难以接受。