/** * Provide a short, simple human understandable string describing the * supplied duration. The duration is a non-negative value. The output is * appended to the supplied StringBuilder and has the form * {@code <number> <space> <units>}, where {@code <number>} * is an integer and {@code <units>} is defined by the value of unitFormat. */ public static StringBuilder appendDuration(StringBuilder sb, long duration, TimeUnit units, TimeUnitFormat unitFormat) { checkArgument(duration >= 0); Map<TimeUnit,String> unitsFormat = (unitFormat == TimeUnitFormat.SHORT) ? SHORT_TIMEUNIT_NAMES : LONG_TIMEUNIT_NAMES; TimeUnit targetUnit = displayUnitFor(duration, units); return sb.append(targetUnit.convert(duration, units)).append(' '). append(unitsFormat.get(targetUnit)); }
public static String describeDuration(double duration, TimeUnit units) { TimeUnit targetUnits = displayUnitFor(Math.round(duration), units); double scaledDuration = convert(duration, units, targetUnits); return toThreeSigFig(scaledDuration, 2000) + " " + SHORT_TIMEUNIT_NAMES.get(targetUnits); }
public static String describeDuration(StatisticalSummary duration, TimeUnit units) { double min = duration.getMin(); double max = duration.getMax(); if (min == max) { return describeDuration(max, units); } else { double mean = duration.getMean(); double sem = duration.getStandardDeviation() / Math.sqrt(duration.getN()); String meanDescription; if (sem == 0) { meanDescription = describeDuration(mean, units); } else { TimeUnit targetUnits = displayUnitFor(Math.round(mean), units); double scaledMean = convert(mean, units, targetUnits); double scaledSem = convert(sem, units, targetUnits); meanDescription = "(" + toThreeSigFig(scaledMean, 2000, scaledSem) + ") " + SHORT_TIMEUNIT_NAMES.get(targetUnits); } double sd = duration.getStandardDeviation(); return " min. " + describeDuration(min, units) + ", mean " + meanDescription + ", SD " + describeDuration(sd, units) + ", max. " + describeDuration(max, units); } }