10

在我们的日志文件中,我们存储请求的响应时间。计算中位响应时间的最有效方法是什么,“75/90/95% 的请求在少于 N 次的时间内得到处理”数字等?(我想我的问题的一个变体是:计算一堆数字流的中位数和标准差的最佳方法是什么)。

我想出的最好的办法就是阅读所有的数字,对它们进行排序,然后挑选出数字,但这似乎真的很愚蠢。没有更聪明的方法吗?

我们使用 Perl,但任何语言的解决方案都可能会有所帮助。

4

4 回答 4

11

请参阅文章计算内存受限应用程序中的百分位数。它解释了如何有效地计算中位数和其他百分位数。

另外,这里有一篇关于计算标准偏差(方差)的文章:准确计算运行方差

于 2009-09-29T08:00:10.537 回答
6

你可以看看快速选择:

http://en.wikipedia.org/wiki/Selection_algorithm

或者在 Wirth 算法: http: //www.mail-archive.com/numpy-discussion@scipy.org/msg20059.html

中位数的基准可以在这里找到:http: //ndevilla.free.fr/median/median/index.html

于 2009-09-29T07:54:35.343 回答
4

看看PDL ... Perl 数据语言。

另请参阅这些先前关于均值/标准差开发的 SO 问题:

/I3az/

于 2009-09-29T12:50:21.330 回答
2

这里有代码示例:http ://rosettacode.org/wiki/Standard_Deviation

于 2009-09-30T13:47:46.780 回答