Skip to content

Commit 263d805

Browse files
committed
use string builder for performance
Signed-off-by: Gregor Zeitlinger <[email protected]>
1 parent b98e054 commit 263d805

File tree

1 file changed

+20
-21
lines changed
  • prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway

1 file changed

+20
-21
lines changed

prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package io.prometheus.metrics.exporter.pushgateway;
22

3-
import static io.prometheus.metrics.exporter.pushgateway.Scheme.HTTP;
4-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.*;
5-
63
import io.prometheus.metrics.config.ExporterPushgatewayProperties;
74
import io.prometheus.metrics.config.PrometheusProperties;
85
import io.prometheus.metrics.config.PrometheusPropertiesException;
@@ -13,6 +10,7 @@
1310
import io.prometheus.metrics.model.registry.MultiCollector;
1411
import io.prometheus.metrics.model.registry.PrometheusRegistry;
1512
import io.prometheus.metrics.model.snapshots.EscapingScheme;
13+
1614
import java.io.ByteArrayOutputStream;
1715
import java.io.IOException;
1816
import java.io.InputStream;
@@ -32,6 +30,9 @@
3230
import java.util.Map;
3331
import java.util.TreeMap;
3432

33+
import static io.prometheus.metrics.exporter.pushgateway.Scheme.HTTP;
34+
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.escapeName;
35+
3536
/**
3637
* Export metrics via the <a href="https://github.com/prometheus/pushgateway">Prometheus
3738
* Pushgateway</a>
@@ -466,36 +467,34 @@ private Format getFormat() {
466467

467468
private URL makeUrl(ExporterPushgatewayProperties properties)
468469
throws UnsupportedEncodingException, MalformedURLException {
469-
String url = getScheme(properties) + "://" + getAddress(properties) + "/metrics/";
470+
StringBuilder url =
471+
new StringBuilder(getScheme(properties) + "://" + getAddress(properties) + "/metrics/");
470472
String job = getJob(properties);
471473
if (job.contains("/")) {
472-
url += "job@base64/" + base64url(job);
474+
url.append("job@base64/").append(base64url(job));
473475
} else {
474-
url += "job/" + URLEncoder.encode(job, "UTF-8");
476+
url.append("job/").append(URLEncoder.encode(job, "UTF-8"));
475477
}
476478
if (groupingKey != null) {
477479
for (Map.Entry<String, String> entry : groupingKey.entrySet()) {
478480
if (entry.getValue().isEmpty()) {
479-
url +=
480-
"/"
481-
+ escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING)
482-
+ "@base64/=";
481+
url.append("/")
482+
.append(escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING))
483+
.append("@base64/=");
483484
} else if (entry.getValue().contains("/")) {
484-
url +=
485-
"/"
486-
+ escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING)
487-
+ "@base64/"
488-
+ base64url(entry.getValue());
485+
url.append("/")
486+
.append(escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING))
487+
.append("@base64/")
488+
.append(base64url(entry.getValue()));
489489
} else {
490-
url +=
491-
"/"
492-
+ escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING)
493-
+ "/"
494-
+ URLEncoder.encode(entry.getValue(), "UTF-8");
490+
url.append("/")
491+
.append(escapeName(entry.getKey(), EscapingScheme.VALUE_ENCODING_ESCAPING))
492+
.append("/")
493+
.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
495494
}
496495
}
497496
}
498-
return URI.create(url).normalize().toURL();
497+
return URI.create(url.toString()).normalize().toURL();
499498
}
500499

501500
private String base64url(String v) {

0 commit comments

Comments
 (0)