From b38226e810e5ba255c41c93cc79f7e997d8ddb5a 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 Issue #3979 --- .../springframework/batch/core/ExitStatus.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 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 4f93ce7da..510861f1c 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2022 the original author or authors. + * Copyright 2006-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -246,18 +246,19 @@ public class ExitStatus implements Serializable, Comparable { * 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()); } /**