Быстрое преобразование double в строку с заданной точностью

Мне нужно преобразовать double в строку с заданной точностью . String.format("%.3f", value)(или DecimalFormat) выполняет свою работу, но тесты показывают, что он медленный даже по сравнению с не очень быстрым Double.toStringпреобразованием (около 1-3 секунды, чтобы преобразовать 1 миллион чисел на моей машине).

Есть ли лучший способ сделать это?

ОБНОВЛЕНИЕ: результаты сравнительного анализа

Случайные числа от 0 до 1000000, результаты выражены в операциях в миллисекунду (Java 1.7.0_45)

Benchmark                                    Mean   Mean error    Units

String_format                             747.394       13.197   ops/ms
BigDecimal_toPlainString                 1349.552       31.144   ops/ms
DecimalFormat_format                     1890.917       28.886   ops/ms
Double_toString                          3341.941       85.453   ops/ms
DoubleFormatUtil_formatDouble            7760.968       87.630   ops/ms
SO_User_format                          14269.388      168.206   ops/ms

ОБНОВЛЕНИЕ:

Java 10, + ryu

                                Mode  Cnt      Score      Error   Units
String_format                  thrpt   20    998.741 ±   52.704  ops/ms
BigDecimal_toPlainString       thrpt   20   2079.965 ±  101.398  ops/ms
DecimalFormat_format           thrpt   20   2040.792 ±   48.378  ops/ms
Double_toString                thrpt   20   3575.301 ±  112.548  ops/ms
DoubleFormatUtil_formatDouble  thrpt   20   7206.281 ±  307.348  ops/ms
ruy_doubleToString             thrpt   20   9626.312 ±  285.778  ops/ms
SO_User_format                 thrpt   20  17143.901 ± 1307.685  ops/ms

10
задан valodzka 29 July 2018 в 12:44
поделиться