[jdk11u-dev] RFR: 8302191: Performance degradation for float/double modulo on Linux

Jan Kratochvil duke at openjdk.org
Fri Apr 7 13:19:56 UTC 2023


On Tue, 4 Apr 2023 13:00:13 GMT, Jan Kratochvil <duke at openjdk.org> wrote:

> Backport of [JDK-8302191](https://bugs.openjdk.java.net/browse/JDK-8302191). Applies cleanly. It is already committed in trunk.
> 
> 
> build/linux-x86_64-normal-server-fastdebug/jdk/bin/java -jar ~/azul/jmh-jdk-microbenchmarks-git/micros-jdk8/target/micros-jdk8-1.0-SNAPSHOT.jar org.openjdk.bench.java.lang.FloatDoubleRem -i 2 -r 2 -wi 2 -f 2
> unpatched:
> Benchmark                            Mode  Cnt    Score    Error  Units
> FloatDoubleRem.calcDoubleJava        avgt    4  103.219 ±  4.637  ns/op
> FloatDoubleRem.calcFloatJava         avgt    4  106.588 ± 10.357  ns/op
> FloatDoubleRem.cornercaseDoubleJava  avgt    4   11.822 ±  4.074  ns/op
> FloatDoubleRem.cornercaseFloatJava   avgt    4   11.435 ±  1.355  ns/op
> patched:
> Benchmark                            Mode  Cnt   Score    Error  Units
> FloatDoubleRem.calcDoubleJava        avgt    4  34.712 ± 22.532  ns/op
> FloatDoubleRem.calcFloatJava         avgt    4  23.942 ±  5.177  ns/op
> FloatDoubleRem.cornercaseDoubleJava  avgt    4   8.080 ±  1.004  ns/op
> FloatDoubleRem.cornercaseFloatJava   avgt    4  10.647 ±  0.545  ns/op

This change is related to a GCC fix: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108922
gcc-4.8 -> gcc-4.9 had a performance regression. This will be fixed in future gcc-13 release. Unaware whether it also gets backported to recent GCC releases.
**This OpenJDK change fixes a performance regression when comparing recent builds of OpenJDK against older OpenJDK releases still be still compiled by <=gcc-4.8.**
This OpenJDK change makes OpenJDK immune against the GCC performance regression. This GCC performance regression is now present in mostly any GCC release in use nowadays.

While my test shows 3x slowdown a customer's testcase shows about 6x slowdown, it depends on the numbers being computed.

-------------

PR Comment: https://git.openjdk.org/jdk11u-dev/pull/1824#issuecomment-1500281161


More information about the jdk-updates-dev mailing list