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

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


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

commit 3200bf9e438ae017fd92ac1718d6a4ca7de7e322
Author: Chesnay Schepler <ches...@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

Reply via email to