This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 6eba4337a6ba6e44366ce0648c9349a23fa54e8d Author: Benoit Tellier <[email protected]> AuthorDate: Fri Mar 11 09:16:58 2022 +0700 [PERF] MDCBuilder: optimize when 'flat' Most of our MDCs are 'flat', without nesting other MDC builders, yet in MDC builder we keep an additional ImmutableMap builder to handle nested elements even when it is 'flat'. When flat building directly this MDC internals result in a 50% gain. The memory James server spend 20% of its time building MDCs... --- .../util/src/main/java/org/apache/james/util/MDCBuilder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/container/util/src/main/java/org/apache/james/util/MDCBuilder.java b/server/container/util/src/main/java/org/apache/james/util/MDCBuilder.java index 4e86ecc..bff52f2 100644 --- a/server/container/util/src/main/java/org/apache/james/util/MDCBuilder.java +++ b/server/container/util/src/main/java/org/apache/james/util/MDCBuilder.java @@ -146,11 +146,13 @@ public class MDCBuilder { @VisibleForTesting Map<String, String> buildContextMap() { - ImmutableMap.Builder<String, String> result = ImmutableMap.builder(); - - nestedBuilder.build() - .forEach(mdcBuilder -> result.putAll(mdcBuilder.buildContextMap())); + ImmutableList<MDCBuilder> nested = nestedBuilder.build(); + if (nested.isEmpty()) { + return contextMap.build(); + } + ImmutableMap.Builder<String, String> result = ImmutableMap.builder(); + nested.forEach(mdcBuilder -> result.putAll(mdcBuilder.buildContextMap())); return result .putAll(contextMap.build()) .build(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
