Optimization 2.0 for composing strings - Was: Replace concat String to append in StringBuilder parameters
Sergey.Bylokhov at oracle.com
Mon Sep 8 13:34:20 UTC 2014
There was related discussions on the past
And related issues:
On 30.08.2014 0:53, Ulf Zibis wrote:
> Hi compiler people,
> is there some chance that javac could be enhanced to optimize better
> as discussed in this thread? Than refactoring of up to now better
> readable code to ugly StringBuilder at append() code would be superfluous.
> I really like the String concatenation syntax, but unfortunately it
> often causes slower code and bigger footprint.
> Optimally javac would optimize mixed use of StringBuilder,
> StringJoiner, concatenation, toString(), append(String),
> append(Collection) etc. to a single StringBuilder instance, so that
> the resulting code, JITed or not, will have better performance.
> Additionally javac could guess a reasonable initial capacity from the
> given source code.
> Am 29.08.2014 um 10:01 schrieb Wang Weijun:
>> So it's not that the optimization fails but there is no optimization
>> on them yet.
>> I do see the .append("x") case will be easy to deal with, but it
>> looks like historically javac has not been a place to do many
>> optimizations. It mostly converts the java source to byte codes in a
>> 1-to-1 mapping and let VM do whatever it wants (to optimize). When
>> you talked about compiling multiple concatenation into using a single
>> StringBuilder, it's more like choosing the correct implementation
>> rather than an optimization.
>> I don't expect to see big change on this in the near future, so shall
>> we go on with the current enhancement?
>> On Aug 29, 2014, at 2:17, Ulf Zibis <Ulf.Zibis at CoSoCo.de> wrote:
>>> I mean:
>>> It does not output byte code that only uses a single char array to
>>> compose the entire String in question.
>>> With "optimization fails", I also mean, there is used an additional
>>> "StringComposer" e.g. another StringBuilder or a StringJoiner in
>>> addition to the 1st StringBuilder.
>>> Am 27.08.2014 um 14:02 schrieb Pavel Rappo:
>>>> Could you please explain what you mean by "javac optimization
>>>> fails" here?
>>>> On 27 Aug 2014, at 10:41, Ulf Zibis <Ulf.Zibis at CoSoCo.de> wrote:
>>>>> 4.) Now we see, that javac optimization fails again if
>>>>> StringBuilder, concatenation, toString(), append(String),
>>>>> append(Collection) etc. and StringJoiner use is mixed.
Best regards, Sergey.
More information about the core-libs-dev