RFR: 8013395 StringBuffer.toString performance regression impacting embedded benchmarks

Alan Bateman Alan.Bateman at oracle.com
Fri May 10 08:31:58 UTC 2013


On 10/05/2013 07:03, David Holmes wrote:
> Short version:
>
> Cache the value returned by toString and use it to copy-construct a 
> new String on subsequent calls to toString(). Clear the cache on any 
> mutating operation.
>
> webrev: http://cr.openjdk.java.net/~dholmes/8013395/webrev.v2/
>
> Testing: microbenchmark for toString performance; new regression test 
> for correctness; JPRT testset core as a sanity check
>
There is a bit of cringe factor to this one but you've clearly explained 
the rational. I think it has to limited to StringBuffer for correctness 
reasons. Overall I think it is harmless and is okay. I see Peter's 
suggestion about caching the char[] rather than String, seems a good 
idea but probably remote issue (not to mention that developers have been 
encouraged to move to StringBuilder for many years).

One comment on the test is that at L205 then it could also test a != b.

-Alan.



More information about the core-libs-dev mailing list