Hello,

curious about Double.toString(double) performance?

Here are the results obtained by jmh 1.23 on a recent changeset [1]. The benchmark is over the full range of bitwise uniformly distributed random doubles.


# VM options: <none>
# Warmup: 5 iterations, 10 s each
# Measurement: 5 iterations, 10 s each
...
Benchmark                     Mode  Cnt     Score     Error  Units
DoubleToStringBenchmark.test  avgt   25  1251.658 ± 211.068  ns/op

showing quite a variability, probably attributable to intervening gc cycles.



The same setup after the integration of the code in [2] to replace Double.toString(double) with a modern, better specified and correct implementation (as witnessed by many trillions of fully conformant outcomes).


# VM options: <none>
# Warmup: 5 iterations, 10 s each
# Measurement: 5 iterations, 10 s each
...
Benchmark                     Mode  Cnt   Score   Error  Units
DoubleToStringBenchmark.test  avgt   25  70.712 ± 1.461  ns/op

showing both a speedup of 17.7x on my i7 based laptop of 2013 as well as predictable running times. The algorithm never generates temporary garbage.



I'm still looking for enthusiastic reviewers: they seem hard to find, despite monthly reminders... More in [3] and similarly titled posts for the past 12 months.


Greetings
Raffaello

----

[1] https://hg.openjdk.java.net/jdk/jdk/rev/90882ba9f488
[2] https://cr.openjdk.java.net/~bpb/4511638/webrev.04/
[3] https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-March/065476.html

Reply via email to