Используя язык java, я читаю текстовые файлы, содержащие числа. Это терабайты данных и сотни миллиардов чисел.
Цель состоит в том, чтобы извлечь данные как можно быстрее и свести к минимуму активность сборщика мусора. Я хочу разобрать текст непосредственно на примитивы (double, float, int).
Под прямым я подразумеваю:
- без создания какого-либо временного вспомогательного объекта
- без данных бокса в java.lang.Double, java.lang.Float...
- без создания временных экземпляров java.lang.String (обязательный шаг, если вы хотите вызвать JDK Double.parseDouble(...))
До сих пор я использовал структуру javolution:
double javolution.text.TypeFormat.parseDouble(CharSequence sequence);
Я посмотрел код javolution, и он действительно не выделяет временных объектов. А поскольку он принимает CharSequence, вы можете представить символы, декодированные из файлов данных, без создания экземпляров временных строк.
Есть ли альтернативы или лучшие способы?