均值
均值应该是大部分人面对数据统计能够想到的指标,理解起来也非常简单。如果想要看到用户端整体的首屏性能,把多个用户多次访问的首屏指标求均值即可。
然而,在实际的性能统计中,直接使用均值会存在一些问题。
第一个问题是使用均值难以排除极值的影响,这也是最显著的问题。假设有一组用户访问数据,用于度量用户某张图片的加载速度,如图2-5所示。
图2-5 一组用户访问时加载图片的耗时
可以看出,大部分用户加载图片的耗时在100ms左右,但是如果对这些数据求均值,那么得到的统计值约为1162ms,这显然无法真实地反映大部分用户加载这张图片的耗时,如图2-6所示。
可以看到,当有极值(即极端大或极端小的值)出现时,均值往往会被个别极值拉到一个远远偏离大部分值的水平,更糟糕的是,对于生产环境的性能数据来说,这种极值是非常容易产生的。例如,用户打开页面时正在网络信号较差的地铁上,或者正在切换Wi-Fi和数据网络的过程中,又或者是手机过热被降频,这些外在因素都会导致性能数据中存在极值。
图2-6 均值在出现极值时无法反映大多数用户端的水平
在这种情况下,一个可行的方案是按照经验丢弃一部分极值,如根据经验判断大于或等于3000ms的数据是不正常的,就在统计时抛弃这些数据,这样性能指标的总体均值至少不会大幅度偏离大部分用户端的性能数据。
第二个问题是可解释性。虽然均值是一个被广泛接受的概念,但是我们很难真正解释清楚用户端性能的均值代表的现实意义是什么。均值并不代表一个典型用户端的性能状况,也不能代表达到某种性能体验的用户占比,首屏的均值达到1s不代表所有的用户端都处于很好的性能状况,正如平均工资无法体现一个人群的收入状况一样,均值也很难体现用户端的整体性能状况。