You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2018/08/20 15:41:30 UTC

[flink] branch master updated: [FLINK-10082][metrics][slf4j] Provide initial size to StringBuilder

This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 7ae291c  [FLINK-10082][metrics][slf4j] Provide initial size to StringBuilder
7ae291c is described below

commit 7ae291c1ab3a394998aa08b1047726897aad45d4
Author: Chesnay Schepler <ch...@apache.org>
AuthorDate: Mon Aug 20 17:41:27 2018 +0200

    [FLINK-10082][metrics][slf4j] Provide initial size to StringBuilder
---
 .../java/org/apache/flink/metrics/slf4j/Slf4jReporter.java     | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/flink-metrics/flink-metrics-slf4j/src/main/java/org/apache/flink/metrics/slf4j/Slf4jReporter.java b/flink-metrics/flink-metrics-slf4j/src/main/java/org/apache/flink/metrics/slf4j/Slf4jReporter.java
index 5efac30..124efe2 100644
--- a/flink-metrics/flink-metrics-slf4j/src/main/java/org/apache/flink/metrics/slf4j/Slf4jReporter.java
+++ b/flink-metrics/flink-metrics-slf4j/src/main/java/org/apache/flink/metrics/slf4j/Slf4jReporter.java
@@ -42,6 +42,9 @@ public class Slf4jReporter extends AbstractReporter implements Scheduled {
 	private static final Logger LOG = LoggerFactory.getLogger(Slf4jReporter.class);
 	private static final String lineSeparator = System.lineSeparator();
 
+	// the initial size roughly fits ~150 metrics with default scope settings
+	private int previousSize = 16384;
+
 	@VisibleForTesting
 	Map<Gauge<?>, String> getGauges() {
 		return gauges;
@@ -72,7 +75,10 @@ public class Slf4jReporter extends AbstractReporter implements Scheduled {
 
 	@Override
 	public void report() {
-		StringBuilder builder = new StringBuilder();
+		// initialize with previous size to avoid repeated resizing of backing array
+		// pad the size to allow deviations in the final string, for example due to different double value representations
+		StringBuilder builder = new StringBuilder((int) (previousSize * 1.1));
+
 		builder
 			.append(lineSeparator)
 			.append("=========================== Starting metrics report ===========================")
@@ -134,6 +140,8 @@ public class Slf4jReporter extends AbstractReporter implements Scheduled {
 			.append("=========================== Finished metrics report ===========================")
 			.append(lineSeparator);
 		LOG.info(builder.toString());
+
+		previousSize = builder.length();
 	}
 
 	@Override