From a1b9506953c6b9e5e52f1dc61fef3833033656cc Mon Sep 17 00:00:00 2001 From: Andrey Burov Date: Fri, 13 Sep 2024 12:08:30 +0300 Subject: [PATCH] additional improve MetricSnapshots.Builder performance Signed-off-by: Andrey Burov --- .../metrics/model/snapshots/MetricSnapshots.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java index 83d932f87..a4865acb9 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java @@ -3,8 +3,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.stream.Stream; import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName; @@ -74,6 +76,7 @@ public static Builder builder() { public static class Builder { private final List snapshots = new ArrayList<>(); + private final Set prometheusNames = new HashSet<>(); private Builder() { } @@ -83,12 +86,7 @@ public boolean containsMetricName(String name) { return false; } String prometheusName = prometheusName(name); - for (MetricSnapshot snapshot : snapshots) { - if (snapshot.getMetadata().getPrometheusName().equals(prometheusName)) { - return true; - } - } - return false; + return prometheusNames.contains(prometheusName); } /** @@ -96,6 +94,7 @@ public boolean containsMetricName(String name) { */ public Builder metricSnapshot(MetricSnapshot snapshot) { snapshots.add(snapshot); + prometheusNames.add(snapshot.getMetadata().getPrometheusName()); return this; }