Class SynchronizedDoubleHistogram

  • All Implemented Interfaces:
    java.io.Serializable, DoubleValueRecorder

    public class SynchronizedDoubleHistogram
    extends DoubleHistogram

    A floating point values High Dynamic Range (HDR) Histogram that is synchronized as a whole

    A SynchronizedDoubleHistogram is a variant of DoubleHistogram that is synchronized as a whole, such that queries, copying, and addition operations are atomic with relation to modification on the SynchronizedDoubleHistogram, nd such that external accessors (e.g. iterations on the histogram data) that synchronize on the SynchronizedDoubleHistogram instance can safely assume that no modifications to the histogram data occur within their synchronized block.

    It is important to note that synchronization can result in blocking recoding calls. If non-blocking recoding operations are required, consider using ConcurrentDoubleHistogram, or (recommended) DoubleRecorder which were intended for concurrent operations.

    SynchronizedDoubleHistogram supports the recording and analyzing sampled data value counts across a configurable dynamic range of floating point (double) values, with configurable value precision within the range. Dynamic range is expressed as a ratio between the highest and lowest non-zero values trackable within the histogram at any given time. Value precision is expressed as the number of significant [decimal] digits in the value recording, and provides control over value quantization behavior across the value range and the subsequent value resolution at any given level.

    Auto-ranging: Unlike integer value based histograms, the specific value range tracked by a SynchronizedDoubleHistogram is not specified upfront. Only the dynamic range of values that the histogram can cover is (optionally) specified. E.g. When a ConcurrentDoubleHistogram is created to track a dynamic range of 3600000000000 (enough to track values from a nanosecond to an hour), values could be recorded into into it in any consistent unit of time as long as the ratio between the highest and lowest non-zero values stays within the specified dynamic range, so recording in units of nanoseconds (1.0 thru 3600000000000.0), milliseconds (0.000001 thru 3600000.0) seconds (0.000000001 thru 3600.0), hours (1/3.6E12 thru 1.0) will all work just as well.

    Auto-resizing: When constructed with no specified dynamic range (or when auto-resize is turned on with setAutoResize(boolean)) a SynchronizedDoubleHistogram will auto-resize its dynamic range to include recorded values as they are encountered. Note that recording calls that cause auto-resizing may take longer to execute, as resizing incurs allocation and copying of internal data structures.

    Attempts to record non-zero values that range outside of the specified dynamic range (or exceed the limits of of dynamic range when auto-resizing) may results in ArrayIndexOutOfBoundsException exceptions, either due to overflow or underflow conditions. These exceptions will only be thrown if recording the value would have resulted in discarding or losing the required value precision of values already recorded in the histogram.

    See package description for org.HdrHistogram for details.

    See Also:
    Serialized Form
    • Constructor Detail

      • SynchronizedDoubleHistogram

        public SynchronizedDoubleHistogram​(int numberOfSignificantValueDigits)
        Construct a new auto-resizing DoubleHistogram using a precision stated as a number of significant decimal digits.
        Parameters:
        numberOfSignificantValueDigits - Specifies the precision to use. This is the number of significant decimal digits to which the histogram will maintain value resolution and separation. Must be a non-negative integer between 0 and 5.
      • SynchronizedDoubleHistogram

        public SynchronizedDoubleHistogram​(long highestToLowestValueRatio,
                                           int numberOfSignificantValueDigits)
        Construct a new DoubleHistogram with the specified dynamic range (provided in highestToLowestValueRatio) and using a precision stated as a number of significant decimal digits.
        Parameters:
        highestToLowestValueRatio - specifies the dynamic range to use
        numberOfSignificantValueDigits - Specifies the precision to use. This is the number of significant decimal digits to which the histogram will maintain value resolution and separation. Must be a non-negative integer between 0 and 5.
      • SynchronizedDoubleHistogram

        public SynchronizedDoubleHistogram​(ConcurrentDoubleHistogram source)
        Construct a SynchronizedDoubleHistogram with the same range settings as a given source, duplicating the source's start/end timestamps (but NOT it's contents)
        Parameters:
        source - The source histogram to duplicate
    • Method Detail

      • recordValue

        public void recordValue​(double value)
                         throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Record a value in the histogram
        Specified by:
        recordValue in interface DoubleValueRecorder
        Overrides:
        recordValue in class DoubleHistogram
        Parameters:
        value - The value to be recorded
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - (may throw) if value cannot be covered by the histogram's range
      • recordValueWithCount

        public void recordValueWithCount​(double value,
                                         long count)
                                  throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Record a value in the histogram (adding to the value's current count)
        Specified by:
        recordValueWithCount in interface DoubleValueRecorder
        Overrides:
        recordValueWithCount in class DoubleHistogram
        Parameters:
        value - The value to be recorded
        count - The number of occurrences of this value to record
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - (may throw) if value cannot be covered by the histogram's range
      • recordValueWithExpectedInterval

        public void recordValueWithExpectedInterval​(double value,
                                                    double expectedIntervalBetweenValueSamples)
                                             throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Record a value in the histogram.

        To compensate for the loss of sampled values when a recorded value is larger than the expected interval between value samples, Histogram will auto-generate an additional series of decreasingly-smaller (down to the expectedIntervalBetweenValueSamples) value records.

        Note: This is a at-recording correction method, as opposed to the post-recording correction method provided by DoubleHistogram.copyCorrectedForCoordinatedOmission(double). The use cases for these two methods are mutually exclusive, and only one of the two should be be used on a given data set to correct for the same coordinated omission issue.

        See notes in the description of the Histogram calls for an illustration of why this corrective behavior is important.

        Specified by:
        recordValueWithExpectedInterval in interface DoubleValueRecorder
        Overrides:
        recordValueWithExpectedInterval in class DoubleHistogram
        Parameters:
        value - The value to record
        expectedIntervalBetweenValueSamples - If expectedIntervalBetweenValueSamples is larger than 0, add auto-generated value records as appropriate if value is larger than expectedIntervalBetweenValueSamples
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - (may throw) if value cannot be covered by the histogram's range
      • copyCorrectedForCoordinatedOmission

        public DoubleHistogram copyCorrectedForCoordinatedOmission​(double expectedIntervalBetweenValueSamples)
        Description copied from class: DoubleHistogram
        Get a copy of this histogram, corrected for coordinated omission.

        To compensate for the loss of sampled values when a recorded value is larger than the expected interval between value samples, the new histogram will include an auto-generated additional series of decreasingly-smaller (down to the expectedIntervalBetweenValueSamples) value records for each count found in the current histogram that is larger than the expectedIntervalBetweenValueSamples. Note: This is a post-correction method, as opposed to the at-recording correction method provided by recordValueWithExpectedInterval. The two methods are mutually exclusive, and only one of the two should be be used on a given data set to correct for the same coordinated omission issue. by

        See notes in the description of the Histogram calls for an illustration of why this corrective behavior is important.

        Overrides:
        copyCorrectedForCoordinatedOmission in class DoubleHistogram
        Parameters:
        expectedIntervalBetweenValueSamples - If expectedIntervalBetweenValueSamples is larger than 0, add auto-generated value records as appropriate if value is larger than expectedIntervalBetweenValueSamples
        Returns:
        a copy of this histogram, corrected for coordinated omission.
      • copyInto

        public void copyInto​(DoubleHistogram targetHistogram)
        Description copied from class: DoubleHistogram
        Copy this histogram into the target histogram, overwriting it's contents.
        Overrides:
        copyInto in class DoubleHistogram
        Parameters:
        targetHistogram - the histogram to copy into
      • copyIntoCorrectedForCoordinatedOmission

        public void copyIntoCorrectedForCoordinatedOmission​(DoubleHistogram targetHistogram,
                                                            double expectedIntervalBetweenValueSamples)
        Description copied from class: DoubleHistogram
        Copy this histogram, corrected for coordinated omission, into the target histogram, overwriting it's contents. (see DoubleHistogram.copyCorrectedForCoordinatedOmission(double) for more detailed explanation about how correction is applied)
        Overrides:
        copyIntoCorrectedForCoordinatedOmission in class DoubleHistogram
        Parameters:
        targetHistogram - the histogram to copy into
        expectedIntervalBetweenValueSamples - If expectedIntervalBetweenValueSamples is larger than 0, add auto-generated value records as appropriate if value is larger than expectedIntervalBetweenValueSamples
      • add

        public void add​(DoubleHistogram fromHistogram)
                 throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Add the contents of another histogram to this one.
        Overrides:
        add in class DoubleHistogram
        Parameters:
        fromHistogram - The other histogram.
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - (may throw) if values in fromHistogram's cannot be covered by this histogram's range
      • subtract

        public void subtract​(DoubleHistogram fromHistogram)
        Description copied from class: DoubleHistogram
        Subtract the contents of another histogram from this one.
        Overrides:
        subtract in class DoubleHistogram
        Parameters:
        fromHistogram - The other histogram.
      • addWhileCorrectingForCoordinatedOmission

        public void addWhileCorrectingForCoordinatedOmission​(DoubleHistogram fromHistogram,
                                                             double expectedIntervalBetweenValueSamples)
        Description copied from class: DoubleHistogram
        Add the contents of another histogram to this one, while correcting the incoming data for coordinated omission.

        To compensate for the loss of sampled values when a recorded value is larger than the expected interval between value samples, the values added will include an auto-generated additional series of decreasingly-smaller (down to the expectedIntervalBetweenValueSamples) value records for each count found in the current histogram that is larger than the expectedIntervalBetweenValueSamples. Note: This is a post-recording correction method, as opposed to the at-recording correction method provided by recordValueWithExpectedInterval. The two methods are mutually exclusive, and only one of the two should be be used on a given data set to correct for the same coordinated omission issue. by

        See notes in the description of the Histogram calls for an illustration of why this corrective behavior is important.

        Overrides:
        addWhileCorrectingForCoordinatedOmission in class DoubleHistogram
        Parameters:
        fromHistogram - Other histogram. highestToLowestValueRatio and numberOfSignificantValueDigits must match.
        expectedIntervalBetweenValueSamples - If expectedIntervalBetweenValueSamples is larger than 0, add auto-generated value records as appropriate if value is larger than expectedIntervalBetweenValueSamples
      • equals

        public boolean equals​(java.lang.Object other)
        Description copied from class: DoubleHistogram
        Determine if this histogram is equivalent to another.
        Overrides:
        equals in class DoubleHistogram
        Parameters:
        other - the other histogram to compare to
        Returns:
        True if this histogram are equivalent with the other.
      • getTotalCount

        public long getTotalCount()
        Description copied from class: DoubleHistogram
        Get the total count of all recorded values in the histogram
        Overrides:
        getTotalCount in class DoubleHistogram
        Returns:
        the total count of all recorded values in the histogram
      • getIntegerToDoubleValueConversionRatio

        public double getIntegerToDoubleValueConversionRatio()
        Description copied from class: DoubleHistogram
        Get the current conversion ratio from interval integer value representation to double units. (keep in mind that this can change because it is auto ranging). This ratio can be useful for converting integer values found in iteration, although the preferred form for accessing iteration values would be to use the getDoubleValueIteratedTo() and getDoubleValueIteratedFrom() accessors to HistogramIterationValue iterated values.
        Overrides:
        getIntegerToDoubleValueConversionRatio in class DoubleHistogram
        Returns:
        the current conversion ratio from interval integer value representation to double units.
      • getHighestToLowestValueRatio

        public long getHighestToLowestValueRatio()
        Description copied from class: DoubleHistogram
        get the Dynamic range of the histogram: the configured ratio between the highest trackable value and the lowest trackable non zero value at any given time.
        Overrides:
        getHighestToLowestValueRatio in class DoubleHistogram
        Returns:
        the dynamic range of the histogram, expressed as the ratio between the highest trackable value and the lowest trackable non zero value at any given time.
      • sizeOfEquivalentValueRange

        public double sizeOfEquivalentValueRange​(double value)
        Description copied from class: DoubleHistogram
        Get the size (in value units) of the range of values that are equivalent to the given value within the histogram's resolution. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        sizeOfEquivalentValueRange in class DoubleHistogram
        Parameters:
        value - The given value
        Returns:
        The lowest value that is equivalent to the given value within the histogram's resolution.
      • lowestEquivalentValue

        public double lowestEquivalentValue​(double value)
        Description copied from class: DoubleHistogram
        Get the lowest value that is equivalent to the given value within the histogram's resolution. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        lowestEquivalentValue in class DoubleHistogram
        Parameters:
        value - The given value
        Returns:
        The lowest value that is equivalent to the given value within the histogram's resolution.
      • highestEquivalentValue

        public double highestEquivalentValue​(double value)
        Description copied from class: DoubleHistogram
        Get the highest value that is equivalent to the given value within the histogram's resolution. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        highestEquivalentValue in class DoubleHistogram
        Parameters:
        value - The given value
        Returns:
        The highest value that is equivalent to the given value within the histogram's resolution.
      • medianEquivalentValue

        public double medianEquivalentValue​(double value)
        Description copied from class: DoubleHistogram
        Get a value that lies in the middle (rounded up) of the range of values equivalent the given value. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        medianEquivalentValue in class DoubleHistogram
        Parameters:
        value - The given value
        Returns:
        The value lies in the middle (rounded up) of the range of values equivalent the given value.
      • nextNonEquivalentValue

        public double nextNonEquivalentValue​(double value)
        Description copied from class: DoubleHistogram
        Get the next value that is not equivalent to the given value within the histogram's resolution. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        nextNonEquivalentValue in class DoubleHistogram
        Parameters:
        value - The given value
        Returns:
        The next value that is not equivalent to the given value within the histogram's resolution.
      • valuesAreEquivalent

        public boolean valuesAreEquivalent​(double value1,
                                           double value2)
        Description copied from class: DoubleHistogram
        Determine if two values are equivalent with the histogram's resolution. Where "equivalent" means that value samples recorded for any two equivalent values are counted in a common total count.
        Overrides:
        valuesAreEquivalent in class DoubleHistogram
        Parameters:
        value1 - first value to compare
        value2 - second value to compare
        Returns:
        True if values are equivalent to within the histogram's resolution.
      • getEstimatedFootprintInBytes

        public int getEstimatedFootprintInBytes()
        Description copied from class: DoubleHistogram
        Provide a (conservatively high) estimate of the Histogram's total footprint in bytes
        Overrides:
        getEstimatedFootprintInBytes in class DoubleHistogram
        Returns:
        a (conservatively high) estimate of the Histogram's total footprint in bytes
      • getStartTimeStamp

        public long getStartTimeStamp()
        Description copied from class: DoubleHistogram
        get the start time stamp [optionally] stored with this histogram
        Overrides:
        getStartTimeStamp in class DoubleHistogram
        Returns:
        the start time stamp [optionally] stored with this histogram
      • setStartTimeStamp

        public void setStartTimeStamp​(long timeStampMsec)
        Description copied from class: DoubleHistogram
        Set the start time stamp value associated with this histogram to a given value.
        Overrides:
        setStartTimeStamp in class DoubleHistogram
        Parameters:
        timeStampMsec - the value to set the time stamp to, [by convention] in msec since the epoch.
      • getEndTimeStamp

        public long getEndTimeStamp()
        Description copied from class: DoubleHistogram
        get the end time stamp [optionally] stored with this histogram
        Overrides:
        getEndTimeStamp in class DoubleHistogram
        Returns:
        the end time stamp [optionally] stored with this histogram
      • setEndTimeStamp

        public void setEndTimeStamp​(long timeStampMsec)
        Description copied from class: DoubleHistogram
        Set the end time stamp value associated with this histogram to a given value.
        Overrides:
        setEndTimeStamp in class DoubleHistogram
        Parameters:
        timeStampMsec - the value to set the time stamp to, [by convention] in msec since the epoch.
      • getMinValue

        public double getMinValue()
        Description copied from class: DoubleHistogram
        Get the lowest recorded value level in the histogram
        Overrides:
        getMinValue in class DoubleHistogram
        Returns:
        the Min value recorded in the histogram
      • getMaxValue

        public double getMaxValue()
        Description copied from class: DoubleHistogram
        Get the highest recorded value level in the histogram
        Overrides:
        getMaxValue in class DoubleHistogram
        Returns:
        the Max value recorded in the histogram
      • getMinNonZeroValue

        public double getMinNonZeroValue()
        Description copied from class: DoubleHistogram
        Get the lowest recorded non-zero value level in the histogram
        Overrides:
        getMinNonZeroValue in class DoubleHistogram
        Returns:
        the lowest recorded non-zero value level in the histogram
      • getMaxValueAsDouble

        public double getMaxValueAsDouble()
        Description copied from class: DoubleHistogram
        Get the highest recorded value level in the histogram as a double
        Overrides:
        getMaxValueAsDouble in class DoubleHistogram
        Returns:
        the highest recorded value level in the histogram as a double
      • getMean

        public double getMean()
        Description copied from class: DoubleHistogram
        Get the computed mean value of all recorded values in the histogram
        Overrides:
        getMean in class DoubleHistogram
        Returns:
        the mean value (in value units) of the histogram data
      • getStdDeviation

        public double getStdDeviation()
        Description copied from class: DoubleHistogram
        Get the computed standard deviation of all recorded values in the histogram
        Overrides:
        getStdDeviation in class DoubleHistogram
        Returns:
        the standard deviation (in value units) of the histogram data
      • getValueAtPercentile

        public double getValueAtPercentile​(double percentile)
        Description copied from class: DoubleHistogram
        Get the value at a given percentile. When the percentile is > 0.0, the value returned is the value that the given the given percentage of the overall recorded value entries in the histogram are either smaller than or equivalent to. When the percentile is 0.0, the value returned is the value that all value entries in the histogram are either larger than or equivalent to.

        Note that two values are "equivalent" in this statement if DoubleHistogram.valuesAreEquivalent(double, double) would return true.

        Overrides:
        getValueAtPercentile in class DoubleHistogram
        Parameters:
        percentile - The percentile for which to return the associated value
        Returns:
        The value that the given percentage of the overall recorded value entries in the histogram are either smaller than or equivalent to. When the percentile is 0.0, returns the value that all value entries in the histogram are either larger than or equivalent to.
      • getPercentileAtOrBelowValue

        public double getPercentileAtOrBelowValue​(double value)
        Description copied from class: DoubleHistogram
        Get the percentile at a given value. The percentile returned is the percentile of values recorded in the histogram that are smaller than or equivalent to the given value.

        Note that two values are "equivalent" in this statement if DoubleHistogram.valuesAreEquivalent(double, double) would return true.

        Overrides:
        getPercentileAtOrBelowValue in class DoubleHistogram
        Parameters:
        value - The value for which to return the associated percentile
        Returns:
        The percentile of values recorded in the histogram that are smaller than or equivalent to the given value.
      • getCountBetweenValues

        public double getCountBetweenValues​(double lowValue,
                                            double highValue)
                                     throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Get the count of recorded values within a range of value levels (inclusive to within the histogram's resolution).
        Overrides:
        getCountBetweenValues in class DoubleHistogram
        Parameters:
        lowValue - The lower value bound on the range for which to provide the recorded count. Will be rounded down with lowestEquivalentValue.
        highValue - The higher value bound on the range for which to provide the recorded count. Will be rounded up with highestEquivalentValue.
        Returns:
        the total count of values recorded in the histogram within the value range that is >= lowestEquivalentValue(lowValue) and <= highestEquivalentValue(highValue)
        Throws:
        java.lang.ArrayIndexOutOfBoundsException
      • getCountAtValue

        public long getCountAtValue​(double value)
                             throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: DoubleHistogram
        Get the count of recorded values at a specific value (to within the histogram resolution at the value level).
        Overrides:
        getCountAtValue in class DoubleHistogram
        Parameters:
        value - The value for which to provide the recorded count
        Returns:
        The total count of values recorded in the histogram within the value range that is >= lowestEquivalentValue(value) and <= highestEquivalentValue(value)
        Throws:
        java.lang.ArrayIndexOutOfBoundsException
      • percentiles

        public DoubleHistogram.Percentiles percentiles​(int percentileTicksPerHalfDistance)
        Description copied from class: DoubleHistogram
        Provide a means of iterating through histogram values according to percentile levels. The iteration is performed in steps that start at 0% and reduce their distance to 100% according to the percentileTicksPerHalfDistance parameter, ultimately reaching 100% when all recorded histogram values are exhausted.

        Overrides:
        percentiles in class DoubleHistogram
        Parameters:
        percentileTicksPerHalfDistance - The number of iteration steps per half-distance to 100%.
        Returns:
        An Iterable<DoubleHistogramIterationValue> through the histogram using a DoublePercentileIterator
      • logarithmicBucketValues

        public DoubleHistogram.LogarithmicBucketValues logarithmicBucketValues​(double valueUnitsInFirstBucket,
                                                                               double logBase)
        Description copied from class: DoubleHistogram
        Provide a means of iterating through histogram values at logarithmically increasing levels. The iteration is performed in steps that start at valueUnitsInFirstBucket and increase exponentially according to logBase, terminating when all recorded histogram values are exhausted.
        Overrides:
        logarithmicBucketValues in class DoubleHistogram
        Parameters:
        valueUnitsInFirstBucket - The size (in value units) of the first bucket in the iteration
        logBase - The multiplier by which bucket sizes will grow in each iteration step
        Returns:
        An Iterable<DoubleHistogramIterationValue> through the histogram using a DoubleLogarithmicIterator
      • allValues

        public DoubleHistogram.AllValues allValues()
        Description copied from class: DoubleHistogram
        Provide a means of iterating through all histogram values using the finest granularity steps supported by the underlying representation. The iteration steps through all possible unit value levels, regardless of whether or not there were recorded values for that value level, and terminates when all recorded histogram values are exhausted.
        Overrides:
        allValues in class DoubleHistogram
        Returns:
        An Iterable<DoubleHistogramIterationValue> through the histogram using a DoubleAllValuesIterator
      • outputPercentileDistribution

        public void outputPercentileDistribution​(java.io.PrintStream printStream,
                                                 java.lang.Double outputValueUnitScalingRatio)
        Description copied from class: DoubleHistogram
        Produce textual representation of the value distribution of histogram data by percentile. The distribution is output with exponentially increasing resolution, with each exponentially decreasing half-distance containing five (5) percentile reporting tick points.
        Overrides:
        outputPercentileDistribution in class DoubleHistogram
        Parameters:
        printStream - Stream into which the distribution will be output

        outputValueUnitScalingRatio - The scaling factor by which to divide histogram recorded values units in output
      • outputPercentileDistribution

        public void outputPercentileDistribution​(java.io.PrintStream printStream,
                                                 int percentileTicksPerHalfDistance,
                                                 java.lang.Double outputValueUnitScalingRatio)
        Description copied from class: DoubleHistogram
        Produce textual representation of the value distribution of histogram data by percentile. The distribution is output with exponentially increasing resolution, with each exponentially decreasing half-distance containing dumpTicksPerHalf percentile reporting tick points.
        Overrides:
        outputPercentileDistribution in class DoubleHistogram
        Parameters:
        printStream - Stream into which the distribution will be output

        percentileTicksPerHalfDistance - The number of reporting points per exponentially decreasing half-distance

        outputValueUnitScalingRatio - The scaling factor by which to divide histogram recorded values units in output
      • outputPercentileDistribution

        public void outputPercentileDistribution​(java.io.PrintStream printStream,
                                                 int percentileTicksPerHalfDistance,
                                                 java.lang.Double outputValueUnitScalingRatio,
                                                 boolean useCsvFormat)
        Description copied from class: DoubleHistogram
        Produce textual representation of the value distribution of histogram data by percentile. The distribution is output with exponentially increasing resolution, with each exponentially decreasing half-distance containing dumpTicksPerHalf percentile reporting tick points.
        Overrides:
        outputPercentileDistribution in class DoubleHistogram
        Parameters:
        printStream - Stream into which the distribution will be output

        percentileTicksPerHalfDistance - The number of reporting points per exponentially decreasing half-distance

        outputValueUnitScalingRatio - The scaling factor by which to divide histogram recorded values units in output
        useCsvFormat - Output in CSV format if true. Otherwise use plain text form.
      • getNeededByteBufferCapacity

        public int getNeededByteBufferCapacity()
        Description copied from class: DoubleHistogram
        Get the capacity needed to encode this histogram into a ByteBuffer
        Overrides:
        getNeededByteBufferCapacity in class DoubleHistogram
        Returns:
        the capacity needed to encode this histogram into a ByteBuffer
      • encodeIntoByteBuffer

        public int encodeIntoByteBuffer​(java.nio.ByteBuffer buffer)
        Description copied from class: DoubleHistogram
        Encode this histogram into a ByteBuffer
        Overrides:
        encodeIntoByteBuffer in class DoubleHistogram
        Parameters:
        buffer - The buffer to encode into
        Returns:
        The number of bytes written to the buffer
      • encodeIntoCompressedByteBuffer

        public int encodeIntoCompressedByteBuffer​(java.nio.ByteBuffer targetBuffer,
                                                  int compressionLevel)
        Description copied from class: DoubleHistogram
        Encode this histogram in compressed form into a byte array
        Overrides:
        encodeIntoCompressedByteBuffer in class DoubleHistogram
        Parameters:
        targetBuffer - The buffer to encode into
        compressionLevel - Compression level (for java.util.zip.Deflater).
        Returns:
        The number of bytes written to the buffer
      • encodeIntoCompressedByteBuffer

        public int encodeIntoCompressedByteBuffer​(java.nio.ByteBuffer targetBuffer)
        Description copied from class: DoubleHistogram
        Encode this histogram in compressed form into a byte array
        Overrides:
        encodeIntoCompressedByteBuffer in class DoubleHistogram
        Parameters:
        targetBuffer - The buffer to encode into
        Returns:
        The number of bytes written to the array