Алгоритм преобразования двойного в массив символов в Java (без использования таких объектов, как Double.toString или StringBuilder)? - PullRequest
3 голосов
/ 27 марта 2012

Кто-нибудь знает, где я могу найти этот алгоритм? Он принимает double и StringBuilder и добавляет двойное к StringBuilder без создания каких-либо объектов или мусора . Конечно я не ищу:

sb.append(Double.toString(myDouble));

// or

sb.append(myDouble);

Я попытался покопаться в исходном коде Java (я уверен, что он каким-то образом это делает), но я не смог увидеть ни одного блока кода / логики, достаточно ясного для повторного использования.

1 Ответ

6 голосов
/ 27 марта 2012

Я написал это для ByteBuffer. Вы должны быть в состоянии адаптировать его. Запись его в прямой ByteBuffer избавляет вас от необходимости преобразовывать его в байты или копировать в «родное» пространство.

См. public ByteStringAppender append(double d)

Если вы записываете это в файл, вы можете использовать всю библиотеку, поскольку она может записывать около 20 миллионов удвоений в секунду. Он может сделать это без системных вызовов при записи в файл с отображенной памятью.

...