首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HDR直方图:在一个样本计数上,最小与最大值不相同

HDR直方图:在一个样本计数上,最小与最大值不相同
EN

Stack Overflow用户
提问于 2016-06-21 17:15:53
回答 2查看 260关注 0票数 0

我正在使用HDR直方图的Java实现:

代码语言:javascript
复制
    <dependency>
        <groupId>org.hdrhistogram</groupId>
        <version>2.1.4</version>
        <artifactId>HdrHistogram</artifactId>
    </dependency>

我认为,即使样本数为1时,最小值和最大值也是不同的:

代码语言:javascript
复制
@Test
public void testHistogram() throws Exception {
    Histogram stats = new Histogram(2);

    stats.recordValue(35071);
    assertEquals(1, stats.getTotalCount());
    assertEquals(35071, stats.getMaxValue());

    assertEquals(35071, stats.getMinNonZeroValue()); // Fails:
               // java.lang.AssertionError: 
               // Expected :35071
               // Actual   :34816


}

我在直方图代码中看到了以下片段:

代码语言:javascript
复制
public long getMinNonZeroValue() {
    return (minNonZeroValue == Long.MAX_VALUE) ?
            Long.MAX_VALUE : lowestEquivalentValue(minNonZeroValue);
}

(在GitHub中)

我的问题是:为什么我们不能简单地返回记录的minNonZeroValue呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-02 07:51:34

HdrHistograms的设置具有最小的可配置精度(例如小数点2,或3,或.)。作为一种数据结构,它使用逻辑上的指数桶和每个线性子桶,在整个动态范围内保持所需的精度,所有这些都在一个固定大小的数据结构内(对于给定的动态范围和精度级别)。因此,直方图中任何记录的整数值都无法与范围lowestEquivalentValue(值)中的任何其他值区别开来。highestEquivalentValue(值)

HdrHistogram小心地避免在“范围内”提供任何结果。当被问到最小值时,它总是用一个相当于最低记录值的值来响应。当被问到最大值时,它总是用一个相当于最高记录值的值来响应。这些答案显然在精确契约中,否则会导致“微妙地令人惊讶”的行为,例如迭代超过最小值或最大值,或者获得查询答案(对于平均值、百分位数等等)。在报告的min..max范围之外。

HTH。

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 13:32:41

在HDR直方图上的一些对话之后,我认为一个原因可能是确保最小值与桶上的迭代结果相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37950683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档