From 0558bd0cd2bdb3d99829a8a7109170c2c6a79a4c Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 14 Apr 2022 14:27:11 +0200 Subject: [PATCH] =?UTF-8?q?#1766=20-=20Performance=20tweaks=20in=20Templat?= =?UTF-8?q?eVariable.toString(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Heavily inspired by the PR @MikeRocke, we removed all usage of String.format(…) from hot code paths triggered by ….toString() as it's used in general output a lot. Before: Benchmark Mode Cnt Score Error Units TemplateVariableBenchmark.toString(…) thrpt 3 2803239,270 ± 110258,955 ops/s After: Benchmark Mode Cnt Score Error Units TemplateVariableBenchmark.toString(…) thrpt 3 10753653,459 ± 156684,459 ops/s --- .../springframework/hateoas/TemplateVariable.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/TemplateVariable.java b/src/main/java/org/springframework/hateoas/TemplateVariable.java index 1ffe52b0..058efc48 100644 --- a/src/main/java/org/springframework/hateoas/TemplateVariable.java +++ b/src/main/java/org/springframework/hateoas/TemplateVariable.java @@ -280,18 +280,21 @@ public final class TemplateVariable implements Serializable, UriTemplate.Expanda */ @Override public String toString() { - return StringUtils.hasText(description) ? String.format("%s - %s", asString(), description) : asString(); + return StringUtils.hasText(description) ? asString() + " - " + description : asString(); } public String asString() { - return String.format("{%s%s}", type.toString(), essence()); + + return "{" + type.toString() + essence() + "}"; } String essence() { - return String.format("%s%s%s", name, - limit != -1 ? ":".concat(String.valueOf(limit)) : "", - isComposite() ? "*" : ""); + String result = name; + result += limit != -1 ? ":" + limit : ""; + result += isComposite() ? "*" : ""; + + return result; } public String getName() {