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

Gustavo Romero gromero at linux.vnet.ibm.com
Wed Sep 12 03:51:08 UTC 2018


Hi Severin,

On 09/11/2018 09:02 AM, Severin Gehwolf wrote:
> Micro-benchmark results from running [1] for x86_64 and ppc64le are
> here (-O2 is sufficient it seems):
> 
> http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8210416/microbenchmarks_results/
> 
> More thoughts?

Thanks a lot for checking it on PPC64.

I did additional tests on a POWER8 using the same microbench. I share the
results below. The numbers are the arithmetic mean of 10 runs. Unit is second.

   1 O3                                   |  O2
   2          Math            StrictMath  |           Math            StrictMath
   3                                      |
   4 acos:    3.0728          3.0728      |  acos:    3.07325         3.07375
   5 asin:    3.0933          3.0916      |  asin:    3.09337         3.0915
   6 atan2:   10.9743         10.9759     |  atan2:   11.2994         11.2977
   7 atan:    7.653           7.6602      |  atan:    7.48463         7.48225
   8 cbrt:    13.444          13.4433     |  cbrt:    13.4535         13.4527
   9 cos:     30.1561         33.9689     |  cos:     30.157          35.1162
  10 cosh:    3.0911          3.1074      |  cosh:    3.09975         3.09088
  11 exp:     1.413           3.0572      |  exp:     1.41313         3.09737
  12 expm1:   3.0281          3.0349      |  expm1:   2.98813         2.98913
  13 hypot:   33.7668         33.7471     |  hypot:   27.9664         27.9675
  14 log10:   4.2213          10.0832     |  log10:   4.221           10.1109
  15 log1p:   9.2886          9.2888      |  log1p:   9.08713         9.08075
  16 log:     3.1362          7.6327      |  log:     3.136           7.633
  17 pow:     13.7787         17.4739     |  pow:     13.7829         17.483
  18 sin:     30.216          33.9733     |  sin:     30.2163         35.1684
  19 sinh:    3.1478          3.152       |  sinh:    3.18638         3.18375
  20 sqrt:    0.665           0.6714      |  sqrt:    0.665           0.671
  21 tan:     31.6409         36.461      |  tan:     31.6385         37.7166
  22 tanh:    3.0753          3.0925      |  tanh:    3.11088         3.10675


Based upon that, it looks like that O3 is better for most of the functions,
specially for sin, cos, and tan.

On the other hand, it looks like that O3 hurts hypot.

Thus it seems -O2 is not quite the same as -O3, but it's not straightforward
to decide which one is better too.

Maybe Andrew can enlight us.

I also CC:ed ppc-aix-port in case somebody there wishes to comment on that.

Thank you.


Best regards,
Gustavo

> Thanks,
> Severin
> 
> [1] https://github.com/gromero/strictmath/
> 



More information about the core-libs-dev mailing list