[aarch64-port-dev ] RFR: 8151502: aarch64: optimize pd_disjoint_words and pd_conjoint_words
Edward Nevill
edward.nevill at gmail.com
Wed Mar 9 12:17:41 UTC 2016
Hi,
Please review the following webrev
http://cr.openjdk.java.net/~enevill/8151502/webrev/
This optimizes Copy::pd_disjoint_words and Copy::pd_conjoint_words using inline assembler.
These routines are heavily used in GC and the aim is to improve the overall performance of GC.
Tested in JMH using the following GCStress program.
http://cr.openjdk.java.net/~enevill/8151502/JMHSample_97_GCStress.java
JMH jar file: http://cr.openjdk.java.net/~enevill/8151502/benchmarks.jar
The following are the results I get
Original:
/home/ed/images/jdk9-orig/bin/java -jar target/benchmarks.jar -i 5 -wi 5 -f 5
Result "gcstress":
24636979.087 ?(99.9%) 267838.773 us/op [Average]
(min, avg, max) = (24102797.710, 24636979.087, 25372022.370), stdev = 357557.099
CI (99.9%): [24369140.314, 24904817.860] (assumes normal distribution)
# Run complete. Total time: 00:20:55
Benchmark Mode Cnt Score Error Units
JMHSample_97_GCStress.gcstress avgt 25 24636979.087 ? 267838.773 us/op
---------------------------------------------------------------------------
Optimized:
/home/ed/images/jdk9-test/bin/java -jar target/benchmarks.jar -i 5 -wi 5 -f 5
Result "gcstress":
20164420.762 ?(99.9%) 280305.425 us/op [Average]
(min, avg, max) = (19738992.960, 20164420.762, 21137460.090), stdev = 374199.723
CI (99.9%): [19884115.337, 20444726.188] (assumes normal distribution)
# Run complete. Total time: 00:17:06
Benchmark Mode Cnt Score Error Units
JMHSample_97_GCStress.gcstress avgt 25 20164420.762 ? 280305.425 us/op
This shows approx 22% performance improvement on this benchmark.
I have also included a small bug fix to Array copy when using -XX:+UseSIMDForMemoryOps. I had fixed this previously, but somehow it fell out.
All the best,
Ed
More information about the aarch64-port-dev
mailing list