1

我一直在使用 Java 中的 HdrPercentile 库来监视系统中某些数字的分布。

我决定走捷径并使用 outputPercentileDistribution 让 HdrHistogram 向我展示它对我的数据的看法。

输出很有用,但我很难理解 HdrHistogram 如何控制它打印的桶数。

数字由函数参数控制

按百分比生成直方图数据值分布的文本表示。分布以指数增加的分辨率输出,每个指数减少的半距离包含 dumpTicksPerHalf 百分位报告滴答点。

percentileTicksPerHalfDistance 每个指数递减半距离的报告点数

我不明白它是如何被翻译成桶的。我确实注意到,我通过的数字越大,我得到的桶就越多。

有人可以准确解释存储桶是如何设置的吗?

4

1 回答 1

1

查看源代码后,我想我明白那里发生了什么。

函数参数的名称略有错误。它真的应该是percentileBucketsPerHalfDistance

系统将一半的距离变为 100%(最初为 50%)并将其拆分为给定数量的桶。所以,percentileBucketsPerHalfDistance = 2我们得到 0% 和 25% 的桶。

然后系统将剩下的一半再次变为 100%,比如 50% 到 75%,并将其分成所需数量的桶,比如 50% 和 62.5%。

然后我们处理 75% 到 87.5%,再分成 2,所以我们得到 75% 和 81.25%

最终我们得到如此接近 100% 以至于我们超调并得到 99.9997138977 和 100.0

于 2016-01-12T14:35:39.910 回答