[PATCH] Use StringJoiner where appropriate in java.base
Kasper Nielsen
kasperni at gmail.com
Thu Jun 20 12:39:51 UTC 2019
> If you allowed a two-time pass of the primitive array you could
> actually create a version that only allocated the actual String and
> backing array.
I tried implementing it
https://gist.github.com/kaspernielsen/62e4eedffdb395228777925551a45e7f
And got a 30-40 % performance increase.
ToString2.toStringExisting 1 avgt 5 16.855 ± 0.960 ns/op
ToString2.toStringExisting 10 avgt 5 79.247 ± 3.142 ns/op
ToString2.toStringExisting 100 avgt 5 814.197 ± 46.062 ns/op
ToString2.toStringExisting 1000 avgt 5 15288.172 ± 1649.338 ns/op
ToString2.toString2Pass 1 avgt 5 13.671 ± 0.142 ns/op
ToString2.toString2Pass 10 avgt 5 54.090 ± 0.724 ns/op
ToString2.toString2Pass 100 avgt 5 513.508 ± 6.063 ns/op
ToString2.toString2Pass 1000 avgt 5 9189.950 ± 47.059 ns/op
ToString2.toStringExisting:·gc.alloc.rate.norm 1 avgt
5 80.000 ± 0.001 B/op
ToString2.toStringExisting:·gc.alloc.rate.norm 10 avgt
5 160.000 ± 0.001 B/op
ToString2.toStringExisting:·gc.alloc.rate.norm 100 avgt
5 1664.000 ± 0.001 B/op
ToString2.toStringExisting:·gc.alloc.rate.norm 1000 avgt
5 23536.006 ± 0.001 B/op
ToString2.toString2Pass:·gc.alloc.rate.norm 1 avgt
5 48.000 ± 0.001 B/op
ToString2.toString2Pass:·gc.alloc.rate.norm 10 avgt
5 120.000 ± 0.001 B/op
ToString2.toString2Pass:·gc.alloc.rate.norm 100 avgt
5 840.000 ± 0.001 B/op
ToString2.toString2Pass:·gc.alloc.rate.norm 1000 avgt
5 9848.004 ± 0.001 B/op
Don't know if it is something worth adding?
/Kasper
More information about the core-libs-dev
mailing list