org.apache.cassandra.utils

## Class EstimatedHistogram

- java.lang.Object
- - org.apache.cassandra.utils.EstimatedHistogram

    public class EstimatedHistogram
    extends java.lang.Object

### Nested Class Summary

Nested Classes
`static class` `EstimatedHistogram.EstimatedHistogramSerializer`

### Field Summary

Fields
`static EstimatedHistogram.EstimatedHistogramSerializer` `serializer`

### Constructor Summary

Constructors
Constructor and Description
`EstimatedHistogram()`
`EstimatedHistogram(int bucketCount)`
`EstimatedHistogram(int bucketCount, boolean considerZeroes)`
`EstimatedHistogram(long[] bucketData)` Create EstimatedHistogram from only bucket data.
`EstimatedHistogram(long[] offsets, long[] bucketData)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `add(long n)` Increments the count of the bucket closest to n, rounding UP.
`long` `count()`
`boolean` `equals(java.lang.Object o)`
`long[]` `getBucketOffsets()`
`long[]` `getBuckets(boolean reset)`
`long` `getLargestBucketOffset()`
`int` `hashCode()`
`boolean` `isOverflowed()`
`void` `log(org.slf4j.Logger log)` log.debug() every record in the histogram
`long` `max()`
`long` `mean()`
`long` `min()`
`static long[]` `newOffsets(int size, boolean considerZeroes)`
`long` `percentile(double percentile)`
`double` `rawMean()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### serializer

    public static final EstimatedHistogram.EstimatedHistogramSerializer serializer

### Constructor Detail

#### EstimatedHistogram

    public EstimatedHistogram()

#### EstimatedHistogram

    public EstimatedHistogram(int bucketCount)

#### EstimatedHistogram

    public EstimatedHistogram(int bucketCount,
                              boolean considerZeroes)

#### EstimatedHistogram

    public EstimatedHistogram(long[] bucketData)

Create EstimatedHistogram from only bucket data.

Parameters:
  `bucketData` - bucket data

#### EstimatedHistogram

    public EstimatedHistogram(long[] offsets,
                              long[] bucketData)

### Method Detail

#### newOffsets

    public static long[] newOffsets(int size,
                                    boolean considerZeroes)

#### getBucketOffsets

    public long[] getBucketOffsets()

Returns:
  the histogram values corresponding to each bucket index

#### add

    public void add(long n)

Increments the count of the bucket closest to n, rounding UP.

Parameters:
  `n` -

#### getBuckets

    public long[] getBuckets(boolean reset)

Parameters:
  `reset` - zero out buckets afterwards if true
Returns:
  a long[] containing the current histogram buckets

#### min

    public long min()

Returns:
  the smallest value that could have been added to this histogram

#### max

    public long max()

Returns:
  the largest value that could have been added to this histogram. If the histogram overflowed, returns Long.MAX_VALUE.

#### percentile

    public long percentile(double percentile)

Parameters:
  `percentile` -
Returns:
  estimated value at given percentile

#### mean

    public long mean()

Returns:
  the ceil of mean histogram value (average of bucket offsets, weighted by count)
Throws:
  `java.lang.IllegalStateException` - if any values were greater than the largest bucket threshold

#### rawMean

    public double rawMean()

Returns:
  the mean histogram value (average of bucket offsets, weighted by count)
Throws:
  `java.lang.IllegalStateException` - if any values were greater than the largest bucket threshold

#### count

    public long count()

Returns:
  the total number of non-zero values

#### getLargestBucketOffset

    public long getLargestBucketOffset()

Returns:
  the largest bucket offset

#### isOverflowed

    public boolean isOverflowed()

Returns:
  true if this histogram has overflowed -- that is, a value larger than our largest bucket could bound was added

#### log

    public void log(org.slf4j.Logger log)

log.debug() every record in the histogram

Parameters:
  `log` -

#### equals

    public boolean equals(java.lang.Object o)

Overrides:
  `equals` in class `java.lang.Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `java.lang.Object`