Мне нужно преобразовать 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