RFR: 8210416: [linux] Poor StrictMath performance due to non-optimized compilation

joe darcy joe.darcy at oracle.com
Wed Sep 5 19:15:12 UTC 2018


Hello,


On 9/5/2018 6:12 AM, Severin Gehwolf wrote:
> Hi,
>
> Cross-posting this review-thread on core-libs-dev and build-dev as this
> is a build change, but affects fdlibm which is core-libs.
>
> With JDK-8170153 optimization for fdlibm code has been turned on for
> ppc64 s390 and aarch64. This patch intends to turn it on on all arches
> on Linux. I've not observed any precision issues. Is there a good
> reason to not use -O3 -ffp-contract=off everywhere?
>
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8210416
> webrev: http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8210416/webrev.01/
>
> Testing: - java/lang/Math, java/lang/StrictMath tests (all pass).
>           - Currently running through submit repo.
>
> A simple micro benchmark from JDK-8170153[1] shows these numbers for
> StrictMath:
>
> Function      | before     | after
> ----------------------------------------------
> sin           | 0m33.382s  | 0m18.731s
> cos           | 0m31.562s  | 0m18.796s
> tan           | 0m33.657s  | 0m21.093s
> atan          | 0m5.714s   | 0m4.902s
> log           | 0m6.212s   | 0m4.439s
> log10         | 0m7.946s   | 0m5.543s
> sqrt          | 0m0.481s   | 0m0.449s
> cbrt          | 0m5.295s   | 0m5.214s
> tanh          | 0m1.404s   | 0m1.307s
> log1p         | 0m6.457s   | 0m5.131s
> IEEEremainder | 0m10.629s  | 0m6.048s
> atan2         | 0m8.037s   | 0m5.668s
> hypot         | 0m2.171s   | 0m2.147s
>
>

Note that pow (JDK-8134795), hypot (JDK-7130085), cbrt (JDK-8136799), 
and exp (JDK-8139688), have been ported to Java as of JDK 9. The sqrt 
method is commonly handled as an intrinsic.

Testing that was not geared toward finding precision/rounding issues 
would be unlikely to find them.

I don't see the sources of the microbenchmark in JDK-8170153.

Cheers,

-Joe



More information about the build-dev mailing list