diff --git a/api/src/main/java/ai/djl/metric/Metric.java b/api/src/main/java/ai/djl/metric/Metric.java index b3c172ce8b3..4743421a1f6 100644 --- a/api/src/main/java/ai/djl/metric/Metric.java +++ b/api/src/main/java/ai/djl/metric/Metric.java @@ -105,6 +105,16 @@ private Metric( this.dimensions = dimensions; } + /** + * Returns a copy of the metric with a new name. + * + * @param name the new metric name + * @return a copy of the metric + */ + public Metric copyOf(String name) { + return new Metric(name, value, unit, timestamp, dimensions); + } + /** * Returns the name of the {@code Metric}. * diff --git a/api/src/main/java/ai/djl/metric/Metrics.java b/api/src/main/java/ai/djl/metric/Metrics.java index bdbd0d3e732..011909499b8 100644 --- a/api/src/main/java/ai/djl/metric/Metrics.java +++ b/api/src/main/java/ai/djl/metric/Metrics.java @@ -172,7 +172,8 @@ public Metric percentile(String metricName, int percentile) { List list = new ArrayList<>(metric); list.sort(Comparator.comparingDouble(Metric::getValue)); int index = metric.size() * percentile / 100; - return list.get(index); + Metric m = list.get(index); + return m.copyOf(m.getMetricName() + "_p" + percentile); } /** diff --git a/api/src/main/java/ai/djl/metric/Unit.java b/api/src/main/java/ai/djl/metric/Unit.java index 81d45e63185..3703d2a312e 100644 --- a/api/src/main/java/ai/djl/metric/Unit.java +++ b/api/src/main/java/ai/djl/metric/Unit.java @@ -41,6 +41,7 @@ public enum Unit { GIGABITS_PER_SECOND("Gigabits/Second"), TERABITS_PER_SECOND("Terabits/Second"), COUNT_PER_SECOND("Count/Second"), + COUNT_PER_ITEM("Count/Item"), NONE("None"); private static final ConcurrentHashMap MAP = new ConcurrentHashMap<>();