Есть текстовый файл input.txt, количество строк до 10^5, размер строки 2 и 3 может достигать 10^9 различных эл-ов. остальные строки могут повторятся между собой и их размер 5 эл-ов.
Я использую следующий код:
static String[] getStrings(String fileName) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
//плохая строчка, создает для каждого эл-та строковый объект в куче.
String[] all_lines = stringBuilder.toString().split("\n");
bufferedReader.close();
return all_lines;
}
Также использовал split() для 2 и 3 строки, что супер не хорошо, ведь при таком коде у меня для млрд элементов в куче создавалось млрд строковых объектов, а это гг для производительности программы.
Наверное нужно использовать byteBuffer, но у меня уже каша в голове, так как сёрфил инет в поисках лучшего решения и слишком много различных выборов на которых нет времени тестировать, если не сложно подскажите решение лучшее на ваш взгляд, буду очень признателен.
Основная задача: максимально быстро прочитать с файла, для 2 и 3 строки нужно интерпретировать как числа, чтобы я мог в дальнейшем обращаться к ним через стек, а не через строки, максимально быстро записать в файл ответ программы.
2 и 3 строки вида: "1 2 33 4 107 11 1000 1007" и т.д. до 10^9 эл-ов.
P.S.:
Вроде бы быстрейший способ это чтение через off-heap метод, а запись через directBuffer, но у меня мало опыта в этом и не уверен что это подходит к конкретно к этой задачи.