我最近正在使用番石榴。秒表有这样一个问题。 我有一个方法可以计算执行put方法的总时间和数量,以便计算在执行put方法上花费的平均时间。
Stopwatch stopwatch = Stopwatch.createStarted();
cacheEntry.put(str, new CacheEntry(str));
putCounter++;
mapBasedStatisticsCache.setPutCounter(putCounter);
currentTime += stopwatch.stop().elapsed(TimeUnit.NANOSECONDS);
System.out.println(currentTime);
mapBasedStatisticsCache.setCurrentTime(currentTime);
然后,我计算平均时间(以纳秒为单位)
public long getAveragePutTime() {
return getCurrentTime() / getPutCounter();
}
然后如何将getAveragePutTime方法的结果解析为hh:mm:ss:ms格式?
我正在尝试这样做:
public String getAveragePutTime() {
long result = getCurrentTime() / getPutCounter();
long hh = TimeUnit.NANOSECONDS.toHours(result);
long mm = TimeUnit.NANOSECONDS.toMinutes(result);
long ss = TimeUnit.NANOSECONDS.toSeconds(result);
long ms = TimeUnit.NANOSECONDS.toMillis(result);
return "Hours: " + hh + " minutes: " + mm + " seconds: " + ss + " millisecond: " + ms;
}
但是我有这个结果:
Nanos: 128240
Hours: 0 minutes: 0 seconds: 0 millisecond: 0
答案 0 :(得分:0)
您有128420纳秒。那是0.000128420秒。那是0.128420毫秒。整数0.128420毫秒是0毫秒。所以你的结果实际上是正常的。
但是...您还有其他问题! getAveragePutTime()
的书写方式将使您拥有多余的数字。因此,如果您有几个小时,请将其从剩菜剩饭中删除:
public String getAveragePutTime() {
long result = getCurrentTime() / getPutCounter();
long hh = TimeUnit.NANOSECONDS.toHours(result);
result -= TimeUnit.HOURS.toNanos(hh);
long mm = TimeUnit.NANOSECONDS.toMinutes(result);
result -= TimeUnit.MINUTES.toNanos(mm);
long ss = TimeUnit.NANOSECONDS.toSeconds(result);
result -= TimeUnit.SECONDS.toNanos(mm);
long ms = TimeUnit.NANOSECONDS.toMillis(result);
return "Hours: " + hh + " minutes: " + mm + " seconds: " + ss + " millisecond: " + ms;
}