Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lower exclusive exponential histogram bounds #4700

Merged
merged 8 commits into from
Oct 6, 2022

Conversation

jack-berg
Copy link
Member

Implements spec PR #2633.

Resolves #4698.

@codecov
Copy link

codecov bot commented Aug 18, 2022

Codecov Report

Base: 90.12% // Head: 90.76% // Increases project coverage by +0.63% 🎉

Coverage data is based on head (d3d2b42) compared to base (6eea038).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #4700      +/-   ##
============================================
+ Coverage     90.12%   90.76%   +0.63%     
+ Complexity     5093     4839     -254     
============================================
  Files           587      555      -32     
  Lines         15714    14430    -1284     
  Branches       1510     1402     -108     
============================================
- Hits          14163    13097    -1066     
+ Misses         1095      912     -183     
+ Partials        456      421      -35     
Impacted Files Coverage Δ
...entialhistogram/ExponentialHistogramPointData.java 100.00% <ø> (ø)
.../aggregator/DoubleExponentialHistogramBuckets.java 88.03% <100.00%> (-0.77%) ⬇️
...ternal/aggregator/ExponentialHistogramIndexer.java 100.00% <100.00%> (ø)
...esting/context/SettableContextStorageProvider.java 37.93% <0.00%> (-24.14%) ⬇️
...ava/io/opentelemetry/sdk/internal/RateLimiter.java 94.11% <0.00%> (-5.89%) ⬇️
...metry/sdk/metrics/export/PeriodicMetricReader.java 87.14% <0.00%> (-2.86%) ⬇️
.../opentelemetry/sdk/internal/ComponentRegistry.java 90.90% <0.00%> (-2.43%) ⬇️
...o/opentelemetry/api/internal/ReadOnlyArrayMap.java 91.11% <0.00%> (-2.23%) ⬇️
...y/exporter/internal/marshal/CodedOutputStream.java 69.82% <0.00%> (-1.19%) ⬇️
...io/opentelemetry/sdk/logs/SdkLogRecordBuilder.java 97.36% <0.00%> (-0.14%) ⬇️
... and 124 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Copy link
Contributor

@jamesmoessis jamesmoessis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, all looks good to me

@github-actions
Copy link
Contributor

This PR was marked stale due to lack of activity. It will be closed in 14 days.

@github-actions github-actions bot added the Stale label Sep 12, 2022
@jack-berg jack-berg removed the Stale label Sep 12, 2022
@jack-berg jack-berg requested a review from a team September 22, 2022 15:32
@jsuereth
Copy link
Contributor

jsuereth commented Oct 3, 2022

Great work here! Did this move any of the exponential histogram benchmarks?

@jack-berg
Copy link
Member Author

Here's the benchmarks before this change:

Benchmark                                                                       (aggregation)                (valueGen)  Mode  Cnt       Score      Error   Units
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   30941.755 ±  824.071   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.015 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   40495.954 ±  659.402   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.020 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   42189.157 ±  358.051   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.021 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   25395.742 ±  235.525   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.012 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   30806.297 ±  171.354   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.015 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  193880.340 ± 2028.446   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.095 ±    0.004    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   29386.212 ±  395.061   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  194459.770 ± 1539.460   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.094 ±    0.002    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  282776.944 ± 3094.907   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.132 ±    0.003    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   25572.981 ±  105.062   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.010 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   33924.463 ±  637.864   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   34697.254 ±  507.783   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   25358.539 ±  147.772   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   24477.776 ±  133.275   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.010 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  167793.161 ±  871.976   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.068 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   23745.744 ±   33.852   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.010 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  168646.171 ± 2872.116   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.069 ±    0.002    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  174614.520 ±  941.710   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.071 ±    0.003    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   26736.263 ±   61.180   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   36424.488 ± 2408.686   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.018 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   37326.456 ±  292.351   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.018 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   21822.273 ±  226.564   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   23591.674 ±  116.508   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.012 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  174749.898 ± 1163.440   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.085 ±    0.004    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   21371.443 ±  185.398   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  171938.665 ± 2063.697   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.084 ±    0.004    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  175363.037 ± 2448.905   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.085 ±    0.003    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts

And here's the same benchmarks with this change:

Benchmark                                                                       (aggregation)                (valueGen)  Mode  Cnt       Score      Error   Units
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   33121.029 ± 5009.016   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.016 ±    0.002    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   43938.080 ± 1490.862   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.021 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                                EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   42956.970 ±  441.221   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm            EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.021 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count                      EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   29662.782 ±  324.530   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.015 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   70552.755 ± 1718.786   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.030 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  198453.498 ± 1265.088   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.097 ±    0.002    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   29681.582 ±  199.344   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  200732.349 ± 1233.493   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.098 ±    0.002    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_10Threads                      EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  280591.837 ± 2082.625   ns/op
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.003 ±    0.001  MB/sec
HistogramBenchmark.aggregate_10Threads:·gc.alloc.rate.norm  EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.131 ±    0.003    B/op
HistogramBenchmark.aggregate_10Threads:·gc.count            EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   25601.830 ±  104.067   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.010 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   33746.622 ±  872.331   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   34770.546 ±  882.084   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   26640.024 ±   20.104   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   22696.049 ±   43.655   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.009 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  168237.024 ±  583.513   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.069 ±    0.003    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   26093.566 ±  110.507   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  170147.305 ± 3298.075   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.070 ±    0.003    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_1Threads                       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  171534.264 ± 2797.141   ns/op
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10      ≈ 10⁻⁴             MB/sec
HistogramBenchmark.aggregate_1Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.070 ±    0.001    B/op
HistogramBenchmark.aggregate_1Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10   26704.491 ±  134.262   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10   35709.558 ±  298.198   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.018 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                                 EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10   36898.213 ±  397.193   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate                  EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm             EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10       0.018 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count                       EXPLICIT_DEFAULT_BUCKET          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   22043.085 ±  132.275   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10   26220.531 ±  132.236   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.014 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  244765.577 ± 5390.385   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.115 ±    0.006    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_SMALL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10   21242.547 ±  340.804   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10       0.011 ±    0.001    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER   FIXED_BUCKET_BOUNDARIES  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10  175622.102 ± 1043.238   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10       0.087 ±    0.004    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER  UNIFORM_RANDOM_WITHIN_2K  avgt   10         ≈ 0             counts
HistogramBenchmark.aggregate_5Threads                       EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10  179097.259 ± 1592.087   ns/op
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate        EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.002 ±    0.001  MB/sec
HistogramBenchmark.aggregate_5Threads:·gc.alloc.rate.norm   EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10       0.086 ±    0.003    B/op
HistogramBenchmark.aggregate_5Threads:·gc.count             EXPONENTIAL_CIRCULAR_BUFFER          GAUSSIAN_LATENCY  avgt   10         ≈ 0             counts

Its useful to save these results locally and compare them using a diff tool.

There's no noticeable difference that I can see. Some results are slightly higher, some results are slightly lower. The differences seem to be within the error margin resulting from not completely isolating the environment.

I did notice that both with and without this change, the exponential histogram performs faster than explicit bucket histograms across the board.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update exponential histogram to use upper-inclusive boundaries
5 participants