[
https://issues.apache.org/jira/browse/LOG4J2-1271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15151915#comment-15151915
]
Remko Popma commented on LOG4J2-1271:
-------------------------------------
Well darn, you're right of course!
I would like to provide a way for latency sensitive users to avoid creating
temporary objects. (Without causing difficulty for normal users.)
For example, if the parameter implements a certain interface, we can pass it
the StringBuilder and the parameter can write itself into the StringBuilder.
> ParameterizedMessage optimization
> ---------------------------------
>
> Key: LOG4J2-1271
> URL: https://issues.apache.org/jira/browse/LOG4J2-1271
> Project: Log4j 2
> Issue Type: Improvement
> Components: API
> Affects Versions: 2.5
> Reporter: Remko Popma
> Assignee: Remko Popma
>
> ParameterizedMessage creates unnecessary objects and does other unnecessary
> work in its constructor.
> On the other hand, it does not create the full formatted string it will
> eventually need to return from {{getFormattedMessage()}}.
> I propose the following changes:
> * Don't call {{argumentsToStrings}} in the constructor. Converting the
> parameter Object[] array to a String[] array should only be done when
> necessary: when this ParameterizedMessage is serialized.
> * Don't copy the parameter Object[] array to a new array. Instead clone the
> array when the {{getParameters()}} method is called.
> * In the constructor, build the fully formatted message. This combines the
> work done by {{formatStringArgs(String, String[])}} and
> {{argumentsToStrings(Object[])}} and avoids the issue mentioned in LOG4J2-763.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]