From 29e746f6c3aef19851bd1822674af438f0b8e14a Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Mon, 23 Aug 2021 17:23:28 +0200 Subject: [PATCH] Optimize ExitStatus#addExitDescription Optimize ExitStatus#addExitDescription by reducing string allocations through: - avoid string allocation when the current description is empty - avoid string allocation when the given description is empty - avoid intermediate string allocation by allocating the correct buffer size --- .../springframework/batch/core/ExitStatus.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java b/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java index 4f93ce7da7..1fe25830bf 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java @@ -246,18 +246,19 @@ public boolean isRunning() { * description. */ public ExitStatus addExitDescription(String description) { - StringBuilder buffer = new StringBuilder(); - boolean changed = StringUtils.hasText(description) && !exitDescription.equals(description); if (StringUtils.hasText(exitDescription)) { - buffer.append(exitDescription); - if (changed) { + if (StringUtils.hasText(description) && !exitDescription.equals(description)) { + StringBuilder buffer = new StringBuilder(description.length() + 2 + exitDescription.length()); + buffer.append(exitDescription); buffer.append("; "); + buffer.append(description); + return new ExitStatus(exitCode, buffer.toString()); } + return this; } - if (changed) { - buffer.append(description); + else { + return new ExitStatus(exitCode, description); } - return new ExitStatus(exitCode, buffer.toString()); } /**