RFR (S): C2: Matrix update barrier math improvements
Aleksey Shipilev
shade at redhat.com
Fri Mar 10 11:36:24 UTC 2017
Hi,
Turns out, we can do a few math transformations for computing matrix index, that
benefits performance. See here:
http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/webrev.01/
I think it only deserves to be in C2. Fighting C1 codegen to arrive to the same
code is a waste of time, IMO. It seems to cut the matrix barrier costs almost in
half:
Benchmark Mode Cnt Score Error Units
# Baseline (no barriers)
Plain.test_Object avgt 15 4.683 ± 0.031 ns/op
Plain.test_Object:cycles avgt 3 18.627 ± 1.466 #/op
Plain.test_Object:instructions avgt 3 29.023 ± 0.059 #/op
# Baseline (-XX:+ShenandoahMatrix)
Plain.test_Object avgt 15 6.629 ± 0.054 ns/op
Plain.test_Object:cycles avgt 3 26.392 ± 2.251 #/op
Plain.test_Object:instructions avgt 3 45.047 ± 0.769 #/op
# Patched (-XX:+ShenandoahMatrix)
Plain.test_Object avgt 15 5.873 ± 0.038 ns/op
Plain.test_Object:cycles avgt 3 23.373 ± 0.339 #/op
Plain.test_Object:instructions avgt 3 41.096 ± 0.333 #/op
Generated code before/after:
http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/baseline.perfasm
http://cr.openjdk.java.net/~shade/shenandoah/matrix-math/optimized.perfasm
Testing: hotspot_gc_shenandoah, jcstress -m quick (matrix update) is running
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list