以最少的迭代次数查找平均值

时间:2012-09-13 15:08:58

标签: java algorithm math statistics performance

我有一个包含以下属性的测量列表:

  1. 测量结果很昂贵。更少的测量 - >更好
  2. 他们都很积极。事实上,有一个正的下限,我不能得到任何低于此值。这个下限是我需要有信心的。
  3. 他们将分配一个或多个中值
  4. 我知道当我发现一个小于median - 2*variance的异常值时,还有另一个“更好”的中位数,因为“最佳”中位数和下限之间的距离总是小于宽度的两倍。正态分布
  5. 目标:找到具有最少迭代次数的最佳中位数,信心度为90%。

    我更喜欢最小的值,但最小的中位数就足够了。

    我正在寻找的是一段代码,我在那里提供测量结果,并告诉我这个中位数是我寻求的中位数和信心度。

    背景:我想用Java方法计时。我可以运行测试几分钟来平均异常值,但是在查看数据时,人们很明显这些值很快会在中值附近积累。

    除非JIT开始,中位数突然跳起。最终,您将得到一条曲线,该曲线在最小中位数的左侧非常陡峭(即中位数左侧的方差为低),右侧为长而柔和的斜坡,其中有一个凹凸处,其中JIT前中位数是。

    Sample test data (13KB)

    testConnect-count.csv是值的直方图,testConnect-history.csv是测量序列。目标是找到一种算法,通过从115000

    中读取最小数量的值,返回testConnect-history.csv左右的较小中位数。

1 个答案:

答案 0 :(得分:1)

我认为实际的问题是:在JIT优化之后给我一个子程序的平均执行。

这个过程不是固定的。 JIT启动的时间取决于实际的虚拟机实现和被测试的程序。我相信你不会找到通用的魔法子弹方法。

你必须试验。我会尝试丢弃一定数量的测量值,进行固定数量的测量,扔掉异常值,取其余部分的平均值。