Я пытаюсь улучшить реализацию внешней сортировки в Java.
У меня есть куча объектов BufferedReader, открытых для временных файлов. Я неоднократно удаляю верхнюю строку из каждого из этих файлов. Это расширяет границы кучи Java.
Я хотел бы более масштабируемый способ сделать это без потери скорости из-за большого количества вызовов конструктора.
Одно из решений - открывать файлы только тогда, когда они необходимы, затем читать первую строку и затем удалять ее. Но я боюсь, что это будет значительно медленнее.
Итак, используя библиотеки Java, это самый эффективный способ сделать это.
- Edit -
Для внешней сортировки обычным способом является разбиение большого файла на несколько файлов чанка. Сортировка каждого из кусков. А затем обработайте отсортированные файлы как буферы, извлеките верхний элемент из каждого файла, наименьший из всех - глобальный минимум. Затем продолжайте пока для всех предметов.
http://en.wikipedia.org/wiki/External_sorting
Мои временные файлы (буферы) в основном являются объектами BufferedReader. Операции, выполняемые с этими файлами, аналогичны операциям со стеком / очередью (просмотр и всплывающее окно, не требуется push)
Я пытаюсь повысить эффективность этих операций. Это связано с тем, что использование множества объектов BufferedReader занимает слишком много места.