Dre*_*kes 6 language-agnostic statistics performance-testing
我正在对服务进行一些性能/负载测试.想象一下测试功能如下:
bytesPerSecond = test(filesize: 10MB, concurrency: 5)
Run Code Online (Sandbox Code Playgroud)
使用这个,我将填充不同大小和并发级别的结果表.还有其他变量,但你明白了.
测试功能可以提升concurrency请求并跟踪吞吐量.这个速率从零开始,然后是尖峰和下降,直到它最终稳定在"真实"值上.
然而,这种稳定性可能需要一段时间才能发生,并且有许多输入组合要进行评估.
test功能如何决定何时执行足够的样本?通过足够的,我想我的意思是它的结果不会改变超出一定的余量,如果继续进行试验.
我记得刚才读过一篇关于这篇文章的文章(来自其中一位jsperf作者)讨论了一个强大的方法,但我再也找不到这篇文章了.
一种简单的方法是计算滑动值窗口的标准偏差.有更好的方法吗?
IIUC,您正在描述估计方差未知的平均值的置信区间的经典问题。也就是说,假设您有n 个结果x 1 , ..., x n,其中每个x i都是来自某个您不太了解的过程的样本:不是平均值,不是方差,也不是分布的形状。对于某些所需的置信区间,您现在希望知道n是否足够大,以便真正的平均值很有可能位于平均值的区间内。
(请注意,在相对较弱的条件下,中心极限定理保证样本均值将收敛于正态分布,但要直接应用它,您将需要方差。)
因此,在这种情况下,确定n是否足够大的经典解决方案如下:
首先计算样本平均值μ = Σ i [xi ] / n。同时计算归一化样本方差s 2 = Σ i [(xi - μ) 2 ] / (n - 1)
取决于n的大小:
如果信心足够,就停下来。否则,增加n。