Skip to content

Commit 607fe0c

Browse files
committed
additional improve MetricSnapshots.Builder performance
1 parent 72b79d4 commit 607fe0c

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import java.util.ArrayList;
44
import java.util.Arrays;
55
import java.util.Collection;
6+
import java.util.HashSet;
67
import java.util.Iterator;
78
import java.util.List;
9+
import java.util.Set;
810
import java.util.stream.Stream;
911

1012
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName;
@@ -74,6 +76,7 @@ public static Builder builder() {
7476
public static class Builder {
7577

7678
private final List<MetricSnapshot> snapshots = new ArrayList<>();
79+
private final Set<String> prometheusNames = new HashSet<>();
7780

7881
private Builder() {
7982
}
@@ -83,19 +86,15 @@ public boolean containsMetricName(String name) {
8386
return false;
8487
}
8588
String prometheusName = prometheusName(name);
86-
for (MetricSnapshot snapshot : snapshots) {
87-
if (snapshot.getMetadata().getPrometheusName().equals(prometheusName)) {
88-
return true;
89-
}
90-
}
91-
return false;
89+
return prometheusNames.contains(prometheusName);
9290
}
9391

9492
/**
9593
* Add a metric snapshot. Call multiple times to add multiple metric snapshots.
9694
*/
9795
public Builder metricSnapshot(MetricSnapshot snapshot) {
9896
snapshots.add(snapshot);
97+
prometheusNames.add(snapshot.getMetadata().getPrometheusName());
9998
return this;
10099
}
101100

0 commit comments

Comments
 (0)