summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-08 23:03:20 +0200
committerGitHub <noreply@github.com>2021-09-08 23:03:20 +0200
commit65889863b8cd7124e45a1983f7f226ad4a663ebc (patch)
treead35ae654d61b1291bbb944d3002641eec28f065
parent66e16f6740f3893fa68c9209b62de97cf157d529 (diff)
parent4d77164defb24a511cf3e9d4aa13f9782bce8982 (diff)
Merge pull request #19028 from vespa-engine/balder/use-dimension-dictionary
As there are very few unique dimensions, normally in the rannge 5-30,…
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
index b99f720cb03..73c97573a31 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
@@ -1,6 +1,9 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.model;
+import com.yahoo.yolean.concurrent.CopyOnWriteHashMap;
+
+import java.util.Map;
import java.util.Objects;
/**
@@ -8,10 +11,13 @@ import java.util.Objects;
*/
public final class DimensionId {
+ private static final Map<String, DimensionId> dictionary = new CopyOnWriteHashMap<>();
public final String id;
private DimensionId(String id) { this.id = id; }
- public static DimensionId toDimensionId(String id) { return new DimensionId(id); }
+ public static DimensionId toDimensionId(String id) {
+ return dictionary.computeIfAbsent(id, key -> new DimensionId(key));
+ }
@Override
public boolean equals(Object o) {