[ https://issues.apache.org/jira/browse/MNG-7899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17777070#comment-17777070 ]
ASF GitHub Bot commented on MNG-7899: ------------------------------------- gnodet commented on code in PR #1270: URL: https://github.com/apache/maven/pull/1270#discussion_r1365012668 ########## maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java: ########## @@ -71,8 +78,13 @@ private void printStackTrace(Throwable t, PrintStream stream, String prefix) { stream.print(prefix); stream.print(" "); stream.print(builder().strong("at")); - stream.print(" " + e.getClassName() + "." + e.getMethodName()); - stream.print(builder().a(" (").strong(getLocation(e)).a(")")); + stream.print(" "); + stream.print(e.getClassName()); + stream.print("."); + stream.print(e.getMethodName()); + stream.print(" ("); + stream.print(builder().strong(getLocation(e))); + stream.print(")"); Review Comment: Are you sure this is interesting in terms of performances ? The benefit to avoid multiple buffer allocations may be balanced by the synchronisation / flushes on the underlying character/byte streams... ########## maven-slf4j-provider/src/main/java/org/slf4j/impl/MavenSimpleLogger.java: ########## @@ -30,6 +29,14 @@ * @since 3.5.0 */ public class MavenSimpleLogger extends SimpleLogger { + + private static final String TRACE_RENDERED_LEVEL = builder().trace("TRACE").build(); + private static final String DEBUG_RENDERED_LEVEL = builder().debug("DEBUG").build(); + private static final String INFO_RENDERED_LEVEL = builder().info("INFO").build(); + private static final String WARN_RENDERED_LEVEL = + builder().warning("WARNING").build(); + private static final String ERROR_RENDERED_LEVEL = builder().error("ERROR").build(); Review Comment: I'd rather have those as fields rather than static. In environments such as `mvnd`, this would avoid leaking system properties between builds. > Various memory usage improvements > --------------------------------- > > Key: MNG-7899 > URL: https://issues.apache.org/jira/browse/MNG-7899 > Project: Maven > Issue Type: Improvement > Components: Design, Patterns & Best Practices, Embedding, > General, Logging > Affects Versions: 4.0.0-alpha-2 > Reporter: sebastien > Priority: Major > > Some optimisations can be applied to the code to reduce the use of temporary > objects. > Typical improvements identified are: > * reduce scope of temporary objects creation to avoid creating when not > needed. Example : > {code:java} > public String toString() { > StringBuilder sb = new StringBuilder(512); > if (isEmpty()) { > return "empty"; > } > for (MetadataGraphVertex v : vertices) { > .....{code} > can be replaced by > {code:java} > public String toString() { > if (isEmpty()) { > return "empty"; > } > StringBuilder sb = new StringBuilder(512); > for (MetadataGraphVertex v : vertices) { > .....{code} > * Reuse StringBuilder objects in loops by setting its length to zero > * Use the StringBuilder.append() with index to avoid String.substring(). > Example: > > {code:java} > int idx = resourceName.lastIndexOf('/'); > buffer.append(idx < 0 ? resourceName : resourceName.substring(idx + 1)); > {code} > can be replaced by > > {code:java} > int idx = resourceName.lastIndexOf('/'); > if (idx < 0) { > buffer.append(resourceName); > } else { > buffer.append(resourceName, idx + 1, resourceName.length()); > } {code} > > > * Replace dynamic string creation static constants when possible > * Avoid creating temporary strings with + operator when the final > destination can be used instead, like PrintStream.print() method > * Avoir using StringBuilder.append() method and util method MessageUtils.a() > when the final destination can be used instead, like PrintStream.print() > method > -- This message was sent by Atlassian Jira (v8.20.10#820010)