Class SynchronizedDoubleHistogram
- java.lang.Object
-
- org.HdrHistogram.EncodableHistogram
-
- org.HdrHistogram.DoubleHistogram
-
- org.HdrHistogram.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 ofDoubleHistogram
that is synchronized as a whole, such that queries, copying, and addition operations are atomic with relation to modification on theSynchronizedDoubleHistogram
, nd such that external accessors (e.g. iterations on the histogram data) that synchronize on theSynchronizedDoubleHistogram
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 aConcurrentDoubleHistogram
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)
) aSynchronizedDoubleHistogram
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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.HdrHistogram.DoubleHistogram
DoubleHistogram.AllValues, DoubleHistogram.LinearBucketValues, DoubleHistogram.LogarithmicBucketValues, DoubleHistogram.Percentiles, DoubleHistogram.RecordedValues
-
-
Field Summary
-
Fields inherited from class org.HdrHistogram.DoubleHistogram
integerValuesHistogram
-
-
Constructor Summary
Constructors Constructor Description SynchronizedDoubleHistogram(int numberOfSignificantValueDigits)
Construct a new auto-resizing DoubleHistogram using a precision stated as a number of significant decimal digits.SynchronizedDoubleHistogram(long highestToLowestValueRatio, int numberOfSignificantValueDigits)
Construct a new DoubleHistogram with the specified dynamic range (provided inhighestToLowestValueRatio
) and using a precision stated as a number of significant decimal digits.SynchronizedDoubleHistogram(ConcurrentDoubleHistogram source)
Construct aSynchronizedDoubleHistogram
with the same range settings as a given source, duplicating the source's start/end timestamps (but NOT it's contents)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(DoubleHistogram fromHistogram)
Add the contents of another histogram to this one.void
addWhileCorrectingForCoordinatedOmission(DoubleHistogram fromHistogram, double expectedIntervalBetweenValueSamples)
Add the contents of another histogram to this one, while correcting the incoming data for coordinated omission.DoubleHistogram.AllValues
allValues()
Provide a means of iterating through all histogram values using the finest granularity steps supported by the underlying representation.DoubleHistogram
copy()
Create a copy of this histogram, complete with data and everything.DoubleHistogram
copyCorrectedForCoordinatedOmission(double expectedIntervalBetweenValueSamples)
Get a copy of this histogram, corrected for coordinated omission.void
copyInto(DoubleHistogram targetHistogram)
Copy this histogram into the target histogram, overwriting it's contents.void
copyIntoCorrectedForCoordinatedOmission(DoubleHistogram targetHistogram, double expectedIntervalBetweenValueSamples)
Copy this histogram, corrected for coordinated omission, into the target histogram, overwriting it's contents.int
encodeIntoByteBuffer(java.nio.ByteBuffer buffer)
Encode this histogram into a ByteBufferint
encodeIntoCompressedByteBuffer(java.nio.ByteBuffer targetBuffer)
Encode this histogram in compressed form into a byte arrayint
encodeIntoCompressedByteBuffer(java.nio.ByteBuffer targetBuffer, int compressionLevel)
Encode this histogram in compressed form into a byte arrayboolean
equals(java.lang.Object other)
Determine if this histogram is equivalent to another.long
getCountAtValue(double value)
Get the count of recorded values at a specific value (to within the histogram resolution at the value level).double
getCountBetweenValues(double lowValue, double highValue)
Get the count of recorded values within a range of value levels (inclusive to within the histogram's resolution).long
getEndTimeStamp()
get the end time stamp [optionally] stored with this histogramint
getEstimatedFootprintInBytes()
Provide a (conservatively high) estimate of the Histogram's total footprint in byteslong
getHighestToLowestValueRatio()
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.double
getIntegerToDoubleValueConversionRatio()
Get the current conversion ratio from interval integer value representation to double units.double
getMaxValue()
Get the highest recorded value level in the histogramdouble
getMaxValueAsDouble()
Get the highest recorded value level in the histogram as a doubledouble
getMean()
Get the computed mean value of all recorded values in the histogramdouble
getMinNonZeroValue()
Get the lowest recorded non-zero value level in the histogramdouble
getMinValue()
Get the lowest recorded value level in the histogramint
getNeededByteBufferCapacity()
Get the capacity needed to encode this histogram into a ByteBufferint
getNumberOfSignificantValueDigits()
get the configured numberOfSignificantValueDigitsdouble
getPercentileAtOrBelowValue(double value)
Get the percentile at a given value.long
getStartTimeStamp()
get the start time stamp [optionally] stored with this histogramdouble
getStdDeviation()
Get the computed standard deviation of all recorded values in the histogramlong
getTotalCount()
Get the total count of all recorded values in the histogramdouble
getValueAtPercentile(double percentile)
Get the value at a given percentile.int
hashCode()
double
highestEquivalentValue(double value)
Get the highest value that is equivalent to the given value within the histogram's resolution.boolean
isAutoResize()
DoubleHistogram.LinearBucketValues
linearBucketValues(double valueUnitsPerBucket)
Provide a means of iterating through histogram values using linear steps.DoubleHistogram.LogarithmicBucketValues
logarithmicBucketValues(double valueUnitsInFirstBucket, double logBase)
Provide a means of iterating through histogram values at logarithmically increasing levels.double
lowestEquivalentValue(double value)
Get the lowest value that is equivalent to the given value within the histogram's resolution.double
medianEquivalentValue(double value)
Get a value that lies in the middle (rounded up) of the range of values equivalent the given value.double
nextNonEquivalentValue(double value)
Get the next value that is not equivalent to the given value within the histogram's resolution.void
outputPercentileDistribution(java.io.PrintStream printStream, int percentileTicksPerHalfDistance, java.lang.Double outputValueUnitScalingRatio)
Produce textual representation of the value distribution of histogram data by percentile.void
outputPercentileDistribution(java.io.PrintStream printStream, int percentileTicksPerHalfDistance, java.lang.Double outputValueUnitScalingRatio, boolean useCsvFormat)
Produce textual representation of the value distribution of histogram data by percentile.void
outputPercentileDistribution(java.io.PrintStream printStream, java.lang.Double outputValueUnitScalingRatio)
Produce textual representation of the value distribution of histogram data by percentile.DoubleHistogram.Percentiles
percentiles(int percentileTicksPerHalfDistance)
Provide a means of iterating through histogram values according to percentile levels.DoubleHistogram.RecordedValues
recordedValues()
Provide a means of iterating through all recorded histogram values using the finest granularity steps supported by the underlying representation.void
recordValue(double value)
Record a value in the histogramvoid
recordValueWithCount(double value, long count)
Record a value in the histogram (adding to the value's current count)void
recordValueWithExpectedInterval(double value, double expectedIntervalBetweenValueSamples)
Record a value in the histogram.void
reset()
Reset the contents and stats of this histogramvoid
setAutoResize(boolean autoResize)
void
setEndTimeStamp(long timeStampMsec)
Set the end time stamp value associated with this histogram to a given value.void
setStartTimeStamp(long timeStampMsec)
Set the start time stamp value associated with this histogram to a given value.double
sizeOfEquivalentValueRange(double value)
Get the size (in value units) of the range of values that are equivalent to the given value within the histogram's resolution.void
subtract(DoubleHistogram fromHistogram)
Subtract the contents of another histogram from this one.boolean
valuesAreEquivalent(double value1, double value2)
Determine if two values are equivalent with the histogram's resolution.-
Methods inherited from class org.HdrHistogram.DoubleHistogram
decodeFromByteBuffer, decodeFromByteBuffer, decodeFromCompressedByteBuffer, decodeFromCompressedByteBuffer, getCurrentHighestTrackableValue, getCurrentLowestTrackableNonZeroValue, getDoubleToIntegerValueConversionRatio, getTag, isDoubleHistogramCookie, setTag
-
-
-
-
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 inhighestToLowestValueRatio
) and using a precision stated as a number of significant decimal digits.- Parameters:
highestToLowestValueRatio
- specifies the dynamic range to usenumberOfSignificantValueDigits
- 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 aSynchronizedDoubleHistogram
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
-
isAutoResize
public boolean isAutoResize()
- Overrides:
isAutoResize
in classDoubleHistogram
-
setAutoResize
public void setAutoResize(boolean autoResize)
- Overrides:
setAutoResize
in classDoubleHistogram
-
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 interfaceDoubleValueRecorder
- Overrides:
recordValue
in classDoubleHistogram
- 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 interfaceDoubleValueRecorder
- Overrides:
recordValueWithCount
in classDoubleHistogram
- Parameters:
value
- The value to be recordedcount
- 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 interfaceDoubleValueRecorder
- Overrides:
recordValueWithExpectedInterval
in classDoubleHistogram
- Parameters:
value
- The value to recordexpectedIntervalBetweenValueSamples
- 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
-
reset
public void reset()
Description copied from class:DoubleHistogram
Reset the contents and stats of this histogram- Specified by:
reset
in interfaceDoubleValueRecorder
- Overrides:
reset
in classDoubleHistogram
-
copy
public DoubleHistogram copy()
Description copied from class:DoubleHistogram
Create a copy of this histogram, complete with data and everything.- Overrides:
copy
in classDoubleHistogram
- Returns:
- A distinct copy of this histogram.
-
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. bySee notes in the description of the Histogram calls for an illustration of why this corrective behavior is important.
- Overrides:
copyCorrectedForCoordinatedOmission
in classDoubleHistogram
- 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 classDoubleHistogram
- 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. (seeDoubleHistogram.copyCorrectedForCoordinatedOmission(double)
for more detailed explanation about how correction is applied)- Overrides:
copyIntoCorrectedForCoordinatedOmission
in classDoubleHistogram
- Parameters:
targetHistogram
- the histogram to copy intoexpectedIntervalBetweenValueSamples
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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. bySee notes in the description of the Histogram calls for an illustration of why this corrective behavior is important.
- Overrides:
addWhileCorrectingForCoordinatedOmission
in classDoubleHistogram
- 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 classDoubleHistogram
- Parameters:
other
- the other histogram to compare to- Returns:
- True if this histogram are equivalent with the other.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classDoubleHistogram
-
getTotalCount
public long getTotalCount()
Description copied from class:DoubleHistogram
Get the total count of all recorded values in the histogram- Overrides:
getTotalCount
in classDoubleHistogram
- 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 thegetDoubleValueIteratedTo()
andgetDoubleValueIteratedFrom()
accessors toHistogramIterationValue
iterated values.- Overrides:
getIntegerToDoubleValueConversionRatio
in classDoubleHistogram
- Returns:
- the current conversion ratio from interval integer value representation to double units.
-
getNumberOfSignificantValueDigits
public int getNumberOfSignificantValueDigits()
Description copied from class:DoubleHistogram
get the configured numberOfSignificantValueDigits- Overrides:
getNumberOfSignificantValueDigits
in classDoubleHistogram
- Returns:
- numberOfSignificantValueDigits
-
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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- Parameters:
value1
- first value to comparevalue2
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- Parameters:
lowValue
- The lower value bound on the range for which to provide the recorded count. Will be rounded down withlowestEquivalentValue
.highValue
- The higher value bound on the range for which to provide the recorded count. Will be rounded up withhighestEquivalentValue
.- 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 classDoubleHistogram
- 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 classDoubleHistogram
- Parameters:
percentileTicksPerHalfDistance
- The number of iteration steps per half-distance to 100%.- Returns:
- An
Iterable
<DoubleHistogramIterationValue
> through the histogram using aDoublePercentileIterator
-
linearBucketValues
public DoubleHistogram.LinearBucketValues linearBucketValues(double valueUnitsPerBucket)
Description copied from class:DoubleHistogram
Provide a means of iterating through histogram values using linear steps. The iteration is performed in steps of valueUnitsPerBucket in size, terminating when all recorded histogram values are exhausted.- Overrides:
linearBucketValues
in classDoubleHistogram
- Parameters:
valueUnitsPerBucket
- The size (in value units) of the linear buckets to use- Returns:
- An
Iterable
<DoubleHistogramIterationValue
> through the histogram using aDoubleLinearIterator
-
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 classDoubleHistogram
- Parameters:
valueUnitsInFirstBucket
- The size (in value units) of the first bucket in the iterationlogBase
- The multiplier by which bucket sizes will grow in each iteration step- Returns:
- An
Iterable
<DoubleHistogramIterationValue
> through the histogram using aDoubleLogarithmicIterator
-
recordedValues
public DoubleHistogram.RecordedValues recordedValues()
Description copied from class:DoubleHistogram
Provide a means of iterating through all recorded histogram values using the finest granularity steps supported by the underlying representation. The iteration steps through all non-zero recorded value counts, and terminates when all recorded histogram values are exhausted.- Overrides:
recordedValues
in classDoubleHistogram
- Returns:
- An
Iterable
<DoubleHistogramIterationValue
> through the histogram using aDoubleRecordedValuesIterator
-
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 classDoubleHistogram
- Returns:
- An
Iterable
<DoubleHistogramIterationValue
> through the histogram using aDoubleAllValuesIterator
-
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 classDoubleHistogram
- Parameters:
printStream
- Stream into which the distribution will be outputoutputValueUnitScalingRatio
- 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 classDoubleHistogram
- Parameters:
printStream
- Stream into which the distribution will be outputpercentileTicksPerHalfDistance
- The number of reporting points per exponentially decreasing half-distanceoutputValueUnitScalingRatio
- 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 classDoubleHistogram
- Parameters:
printStream
- Stream into which the distribution will be outputpercentileTicksPerHalfDistance
- The number of reporting points per exponentially decreasing half-distanceoutputValueUnitScalingRatio
- The scaling factor by which to divide histogram recorded values units in outputuseCsvFormat
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- 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 classDoubleHistogram
- Parameters:
targetBuffer
- The buffer to encode intocompressionLevel
- 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 classDoubleHistogram
- Parameters:
targetBuffer
- The buffer to encode into- Returns:
- The number of bytes written to the array
-
-