sha*_*ian 6 java latency hdrhistogram latencyutils
我正在使用LatencyUtils包来跟踪和报告跨度量的延迟行为:
为了通过这种方法记录时间,时间单位应为纳秒,但在我的情况下,记录的时间为毫秒。我想知道是否有更好的方法来记录毫秒时间?
我现在使用的解决方案是将所有记录的时间乘以一百万。但是我仍然希望结果以微秒为单位,因此对于我得到的结果,我将其除以一百万。
public void addValue(Long val, long sampleCount) {
sum += val * sampleCount;
for (int i = 0; i < sampleCount; i++) {
latencyStats.recordLatency(val*1000000);
}
histogram.add(latencyStats.getIntervalHistogram());
max = Math.max(val, max);
min = Math.min(val, min);
updateValueCount(val,sampleCount);
}
@Override
public double getStandardDeviation() {
return histogram.getStdDeviation()/1000000;
}
Run Code Online (Sandbox Code Playgroud)
的默认构造函数LatencyUtil是这样的:
private long lowestTrackableLatency = 1000L; /* 1 usec */
private long highestTrackableLatency = 3600000000000L; /* 1 hr */
private int numberOfSignificantValueDigits = 2;
private int intervalEstimatorWindowLength = 1024;
private long intervalEstimatorTimeCap = 10000000000L; /* 10 sec */
private PauseDetector pauseDetector = null;
public LatencyStats() {
this(
defaultBuilder.lowestTrackableLatency,
defaultBuilder.highestTrackableLatency,
defaultBuilder.numberOfSignificantValueDigits,
defaultBuilder.intervalEstimatorWindowLength,
defaultBuilder.intervalEstimatorTimeCap,
defaultBuilder.pauseDetector
);
}
Run Code Online (Sandbox Code Playgroud)
因此,事实上,最低的可追踪延迟时间LatencyUtil也以纳秒为单位。如果我以毫秒为单位输入一个值,恐怕会影响记录的结果。
我可以为您提供另一个开源库,它提供了可以将值从一个时间单位转换为另一个时间单位的实用程序。它称为 MgntUtils。请参阅此 javadoc 以了解类TimeInterval。这是一个方便的类,它将时间间隔保存为数值及其关联的 TimeUnit。该类还提供了按所需比例(纳秒、毫秒、秒、分钟、小时或天)检索其值的方法,请参阅方法 toNanos()、toMillis()、toSeconds()、toMinutes()、toHours() , toDays()。您可以在Github和Maven Central上找到该库本身作为 Maven 工件。这是一篇关于图书馆的文章
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |