On Sat, 11 Feb 2023 16:03:24 GMT, Sergey Kuksenko <skukse...@openjdk.org> wrote:

> "The performance looks good." - Could you support this statement with some 
> benchmark results? Thank you.

Hi, here is a detailed result
1. I have run the benchmark in 
[JDK-8269667](https://bugs.openjdk.org/browse/JDK-8269667), which calculates 
1/2, 1/3 ... to 1/100. From the result, we can see nearly 3x faster when the 
remainder is zero, and no obvious difference when it's not zero. This is 
consistent with our estimation, since stripping zeros is needed only when the 
remainder is zero.
before optimization 

    2       3423ms
    3        149ms
    4       3794ms
    5       3931ms
    6        175ms
    7        160ms
    8       3814ms
    9        159ms
   10       3669ms
   11        198ms
   12        183ms
   13        195ms
   14        215ms
   15        197ms
   16       4064ms
   17        184ms
   18        198ms
   19        199ms
   20       4500ms
   21        203ms
   22        188ms
   23        205ms
   24        218ms
   25       4337ms
   26        187ms
   27        189ms
   28        208ms
   29        193ms
   30        194ms
   31        201ms
   32       4029ms
   33        192ms
   34        205ms
   35        204ms
   36        201ms
   37        188ms
   38        188ms
   39        201ms
   40       4179ms
   41        200ms
   42        199ms
   43        187ms
   44        240ms
   45        184ms
   46        199ms
   47        187ms
   48        187ms
   49        196ms
   50       4257ms
   51        187ms
   52        187ms
   53        184ms
   54        196ms
   55        187ms
   56        199ms
   57        198ms
   58        184ms
   59        197ms
   60        200ms
   61        187ms
   62        187ms
   63        196ms
   64       3874ms
   65        187ms
   66        184ms
   67        189ms
   68        200ms
   69        200ms
   70        187ms
   71        197ms
   72        197ms
   73        187ms
   74        200ms
   75        186ms
   76        185ms
   77        197ms
   78        199ms
   79        187ms
   80       4063ms
   81        188ms
   82        199ms
   83        197ms
   84        202ms
   85        188ms
   86        188ms
   87        184ms
   88        185ms
   89        188ms
   90        188ms
   91        202ms
   92        185ms
   93        185ms
   94        202ms
   95        201ms
   96        200ms
   97        197ms
   98        198ms
   99        189ms
  100       4472ms


after optimization 

    2       1308ms
    3        146ms
    4       1117ms
    5       1249ms
    6        174ms
    7        160ms
    8       1014ms
    9        165ms
   10       1394ms
   11        199ms
   12        191ms
   13        204ms
   14        192ms
   15        198ms
   16       1261ms
   17        172ms
   18        185ms
   19        185ms
   20       1223ms
   21        184ms
   22        172ms
   23        184ms
   24        189ms
   25       1227ms
   26        178ms
   27        177ms
   28        188ms
   29        177ms
   30        177ms
   31        189ms
   32        961ms
   33        176ms
   34        185ms
   35        185ms
   36        184ms
   37        172ms
   38        172ms
   39        185ms
   40       1127ms
   41        189ms
   42        189ms
   43        175ms
   44        188ms
   45        176ms
   46        190ms
   47        177ms
   48        175ms
   49        189ms
   50       1222ms
   51        176ms
   52        176ms
   53        173ms
   54        185ms
   55        175ms
   56        185ms
   57        186ms
   58        172ms
   59        185ms
   60        185ms
   61        176ms
   62        176ms
   63        189ms
   64       1339ms
   65        175ms
   66        176ms
   67        176ms
   68        188ms
   69        189ms
   70        175ms
   71        188ms
   72        189ms
   73        172ms
   74        184ms
   75        172ms
   76        172ms
   77        184ms
   78        184ms
   79        172ms
   80       1275ms
   81        172ms
   82        190ms
   83        189ms
   84        189ms
   85        176ms
   86        177ms
   87        176ms
   88        177ms
   89        177ms
   90        172ms
   91        185ms
   92        173ms
   93        171ms
   94        185ms
   95        185ms
   96        185ms
   97        183ms
   98        189ms
   99        233ms
  100       1200ms


2. Also the benchmark TPC-DS has been run on Spark3. TPC-DS has 99 SQL queries, 
the 4th of which spends a lot of time calculating decimals. We have collected 
time assumptions in each query and found out 1/3 less time spent on query4, 
with other queries nearly the same. 
before optimization 

[AUTO-RESULT] query1=14s
[AUTO-RESULT] query2=21s
[AUTO-RESULT] query3=6s
**[AUTO-RESULT] query4=102s**
[AUTO-RESULT] query5=32s
[AUTO-RESULT] query6=7s
[AUTO-RESULT] query7=7s
[AUTO-RESULT] query8=7s
[AUTO-RESULT] query9=28s
[AUTO-RESULT] query10=15s
[AUTO-RESULT] query11=35s
[AUTO-RESULT] query12=6s
[AUTO-RESULT] query13=8s
[AUTO-RESULT] query14=118s
[AUTO-RESULT] query15=7s
[AUTO-RESULT] query16=36s
[AUTO-RESULT] query17=19s
[AUTO-RESULT] query18=10s
[AUTO-RESULT] query19=6s
[AUTO-RESULT] query20=6s
[AUTO-RESULT] query21=4s
[AUTO-RESULT] query22=6s
[AUTO-RESULT] query23=127s
[AUTO-RESULT] query24=48s
[AUTO-RESULT] query25=15s
[AUTO-RESULT] query26=8s
[AUTO-RESULT] query27=7s
[AUTO-RESULT] query28=34s
[AUTO-RESULT] query29=20s
[AUTO-RESULT] query30=10s
[AUTO-RESULT] query31=16s
[AUTO-RESULT] query32=6s
[AUTO-RESULT] query33=12s
[AUTO-RESULT] query34=8s
[AUTO-RESULT] query35=34s
[AUTO-RESULT] query36=7s
[AUTO-RESULT] query37=9s
[AUTO-RESULT] query38=19s
[AUTO-RESULT] query39=9s
[AUTO-RESULT] query40=13s
[AUTO-RESULT] query41=2s
[AUTO-RESULT] query42=5s
[AUTO-RESULT] query43=7s
[AUTO-RESULT] query44=14s
[AUTO-RESULT] query45=8s
[AUTO-RESULT] query46=8s
[AUTO-RESULT] query47=14s
[AUTO-RESULT] query48=9s
[AUTO-RESULT] query49=28s
[AUTO-RESULT] query50=15s
[AUTO-RESULT] query51=25s
[AUTO-RESULT] query52=5s
[AUTO-RESULT] query53=7s
[AUTO-RESULT] query54=14s
[AUTO-RESULT] query55=5s
[AUTO-RESULT] query56=12s
[AUTO-RESULT] query57=12s
[AUTO-RESULT] query58=12s
[AUTO-RESULT] query59=14s
[AUTO-RESULT] query60=12s
[AUTO-RESULT] query61=8s
[AUTO-RESULT] query62=9s
[AUTO-RESULT] query63=6s
[AUTO-RESULT] query64=81s
[AUTO-RESULT] query65=17s
[AUTO-RESULT] query66=14s
[AUTO-RESULT] query67=53s
[AUTO-RESULT] query68=6s
[AUTO-RESULT] query69=14s
[AUTO-RESULT] query70=10s
[AUTO-RESULT] query71=13s
[AUTO-RESULT] query72=43s
[AUTO-RESULT] query73=6s
[AUTO-RESULT] query74=27s
[AUTO-RESULT] query75=49s
[AUTO-RESULT] query76=21s
[AUTO-RESULT] query77=22s
[AUTO-RESULT] query78=69s
[AUTO-RESULT] query79=7s
[AUTO-RESULT] query80=34s
[AUTO-RESULT] query81=10s
[AUTO-RESULT] query82=9s
[AUTO-RESULT] query83=13s
[AUTO-RESULT] query84=7s
[AUTO-RESULT] query85=15s
[AUTO-RESULT] query86=6s
[AUTO-RESULT] query87=21s
[AUTO-RESULT] query88=31s
[AUTO-RESULT] query89=8s
[AUTO-RESULT] query90=10s
[AUTO-RESULT] query91=7s
[AUTO-RESULT] query92=6s
[AUTO-RESULT] query93=19s
[AUTO-RESULT] query94=24s
[AUTO-RESULT] query95=92s
[AUTO-RESULT] query96=9s
[AUTO-RESULT] query97=26s
[AUTO-RESULT] query98=6s
[AUTO-RESULT] query99=10s
[AUTO-RESULT] QueryTotal=1968s


after optimization 

[AUTO-RESULT] query1=13s
[AUTO-RESULT] query2=20s
[AUTO-RESULT] query3=6s
**[AUTO-RESULT] query4=68s**
[AUTO-RESULT] query5=33s
[AUTO-RESULT] query6=7s
[AUTO-RESULT] query7=8s
[AUTO-RESULT] query8=7s
[AUTO-RESULT] query9=28s
[AUTO-RESULT] query10=15s
[AUTO-RESULT] query11=32s
[AUTO-RESULT] query12=6s
[AUTO-RESULT] query13=9s
[AUTO-RESULT] query14=117s
[AUTO-RESULT] query15=8s
[AUTO-RESULT] query16=34s
[AUTO-RESULT] query17=18s
[AUTO-RESULT] query18=10s
[AUTO-RESULT] query19=6s
[AUTO-RESULT] query20=6s
[AUTO-RESULT] query21=4s
[AUTO-RESULT] query22=6s
[AUTO-RESULT] query23=127s
[AUTO-RESULT] query24=48s
[AUTO-RESULT] query25=15s
[AUTO-RESULT] query26=9s
[AUTO-RESULT] query27=7s
[AUTO-RESULT] query28=33s
[AUTO-RESULT] query29=21s
[AUTO-RESULT] query30=9s
[AUTO-RESULT] query31=16s
[AUTO-RESULT] query32=7s
[AUTO-RESULT] query33=12s
[AUTO-RESULT] query34=7s
[AUTO-RESULT] query35=34s
[AUTO-RESULT] query36=8s
[AUTO-RESULT] query37=9s
[AUTO-RESULT] query38=19s
[AUTO-RESULT] query39=9s
[AUTO-RESULT] query40=13s
[AUTO-RESULT] query41=2s
[AUTO-RESULT] query42=5s
[AUTO-RESULT] query43=7s
[AUTO-RESULT] query44=14s
[AUTO-RESULT] query45=7s
[AUTO-RESULT] query46=8s
[AUTO-RESULT] query47=14s
[AUTO-RESULT] query48=9s
[AUTO-RESULT] query49=29s
[AUTO-RESULT] query50=15s
[AUTO-RESULT] query51=25s
[AUTO-RESULT] query52=5s
[AUTO-RESULT] query53=7s
[AUTO-RESULT] query54=15s
[AUTO-RESULT] query55=5s
[AUTO-RESULT] query56=12s
[AUTO-RESULT] query57=12s
[AUTO-RESULT] query58=12s
[AUTO-RESULT] query59=14s
[AUTO-RESULT] query60=12s
[AUTO-RESULT] query61=7s
[AUTO-RESULT] query62=10s
[AUTO-RESULT] query63=6s
[AUTO-RESULT] query64=83s
[AUTO-RESULT] query65=17s
[AUTO-RESULT] query66=14s
[AUTO-RESULT] query67=52s
[AUTO-RESULT] query68=7s
[AUTO-RESULT] query69=14s
[AUTO-RESULT] query70=10s
[AUTO-RESULT] query71=12s
[AUTO-RESULT] query72=43s
[AUTO-RESULT] query73=6s
[AUTO-RESULT] query74=27s
[AUTO-RESULT] query75=48s
[AUTO-RESULT] query76=21s
[AUTO-RESULT] query77=22s
[AUTO-RESULT] query78=69s
[AUTO-RESULT] query79=7s
[AUTO-RESULT] query80=36s
[AUTO-RESULT] query81=10s
[AUTO-RESULT] query82=9s
[AUTO-RESULT] query83=12s
[AUTO-RESULT] query84=7s
[AUTO-RESULT] query85=15s
[AUTO-RESULT] query86=7s
[AUTO-RESULT] query87=19s
[AUTO-RESULT] query88=33s
[AUTO-RESULT] query89=7s
[AUTO-RESULT] query90=10s
[AUTO-RESULT] query91=8s
[AUTO-RESULT] query92=6s
[AUTO-RESULT] query93=20s
[AUTO-RESULT] query94=24s
[AUTO-RESULT] query95=91s
[AUTO-RESULT] query96=9s
[AUTO-RESULT] query97=26s
[AUTO-RESULT] query98=7s
[AUTO-RESULT] query99=10s
[AUTO-RESULT] QueryTotal=1934s


If there is more benchmark for BigDecimal, I am glad to give it a try.
Thank you.

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

PR: https://git.openjdk.org/jdk/pull/12509

Reply via email to