Предположим, следующий формат:быстрый способ расшифровать последовательность целых чисел
Integer1 Integer2 Integer3 Integer4 ...
Эти двоичные числа, написанные с использованием DataInputStream. Есть 22 миллиарда из них, записанных в файл размером около 90G.
Доступная оперативная память составляет> 2 * размер файла.
Таким образом, он может легко вместиться в память. Какой будет самый быстрый подход для чтения и декодирования таких целых чисел. В настоящее время
MappedByteBuffer reads 500M numbers in time: 212.986 seconds
DataInputStream wrapped around a BufferedInputStream reads 500M numbers in time 306.755 seconds.
Целое число '' Integer '' 4 байта (плюс накладные расходы, если они завернуты ...), * 22 миллиарда ~> 81 ГБ. О какой системе вы говорите, что вы думаете, что это может быть вписано в ОЗУ? Очевидно, вы пытаетесь использовать буфер, который должен помочь. Что такое _goal_ здесь - какую задачу вы пытаетесь выполнить? Учитывая ваш текущий курс, ожидайте, что обработка займет около 9 часов в лучшем случае ... –