RFR: 8151123 - Collectors.summingDouble/averagingDouble unnecessarily call mapper twice

Tagir F. Valeev amaembo at gmail.com
Thu Mar 3 09:26:57 UTC 2016


Hello!

Please review and sponsor this small change:

https://bugs.openjdk.java.net/browse/JDK-8151123
http://cr.openjdk.java.net/~tvaleev/webrev/8151123/r1/

User-supplied mapper function is unnecessarily called twice on each
accumulation event in summingDouble and averagingDouble. This function
could be computationally intensive which may degrade the performance
up to 2x. The patch addresses this issue.

Here's also simple JMH benchmark which illustrates the performance
gain.
http://cr.openjdk.java.net/~tvaleev/webrev/8151123/jmh/

Original:

Benchmark                         (n)  Mode  Cnt     Score    Error  Units
AveragingTest.averageDistance      10  avgt   30     0,571 ±  0,049  us/op
AveragingTest.averageDistance    1000  avgt   30    58,573 ±  1,194  us/op
AveragingTest.averageDistance  100000  avgt   30  5854,428 ± 71,242  us/op

Patched:

Benchmark                         (n)  Mode  Cnt     Score    Error  Units
AveragingTest.averageDistance      10  avgt   30     0,336 ±  0,002  us/op
AveragingTest.averageDistance    1000  avgt   30    31,932 ±  0,367  us/op
AveragingTest.averageDistance  100000  avgt   30  3794,541 ± 21,599  us/op

With best regards,
Tagir Valeev.




More information about the core-libs-dev mailing list