怎么确定性能优化是真的有效?

大促的时候我们经常会做压测、性能优化,不过性能优化的效果有时候并不是那么的明显。假设我们对一个接口做了优化,优化前后接口的耗时分别如下图

迭代基线 (优化前)样本 (优化后)
11.00.5
20.81.2
31.10.8

有2次是接口性能明显提供(迭代1、3),有1次明显变差,感觉是优化成功了,而这差异可能是环境造成的,无法做一个定量的明确回答。

1. T-TEST和统计显著性

T-TEST是一种统计假设检验方法,用于确定两个样本均值之间的差异是否具有统计显著性。通常用α表示显著性水平,常见取值是0.1、0.05、0.01,当我们取值0.1的时候表示有10%的概率(时间)两个数据样本相同,反过来说就是90%的可能像两个数据样本有差异。当T-TEST计算的概率值(p值)大于等于1-α,可以说测试结果具有统计显著性。

T-TEST的使用很广泛,在scipy提供了相应的封装,用上面的数据计算

import numpy as np  
from scipy import stats  
  
baseline = np.array([1.0, 0.8, 1.1])  
sample = np.array([0.5, 1.2, 0.8])  
  
t_statistic, p_value = stats.ttest_rel(baseline, sample)  
  
print(f"t-statistic: {t_statistic}")  
print(f"p-value: {p_value}")

计算的p值为0.667,小于0.9,没有统计显著性,两个样本之间没有明显的差别。

2. p值的计算

现在我们看看scipy内部实际是怎么计算的p值

1. 计算每对数据的差

在这里插入图片描述

2. 计算差的平均值

在这里插入图片描述

3. 计算标准差

在这里插入图片描述

4. 计算T统计量

在这里插入图片描述

5. 确定自由度

在这里插入图片描述

6. 查找统计值和计算p值

查找临界 t 值
临界 t 值是根据显著性水平(α)和自由度(df)从 t 分布表中查找到的。对于双尾检验,我们需要查找对应于显著性水平0.1和自由度2的临界t值。
例如,对于自由度为 2 和显著性水平为 0.1(双尾),临界 t 值大约为 2.920。

比较 t 统计量和临界 t 值
如果 ∣t∣ > 临界t值,则拒绝零假设。
如果 ∣t∣ ≤ 临界t值,∣t∣≤临界t值,则不拒绝零假设。
在这个例子中,
∣t∣ = 0.488,小于临界 t 值 2.920,因此我们不能拒绝零假设,即认为两个样本没有统计显著性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值