Я поддерживаю устаревшее приложение Java, использующее плоские файлы (обычный текст) для сохранения. Из-за характера приложения размер этих файлов может достигать 100 МБ в день, и часто ограничивающим фактором в производительности приложения является файл IO. В настоящее время приложение использует простой ol 'java.io.FileOutputStream для записи данных на диск.Производительность/стабильность файла с отображением памяти - Родной или MappedByteBuffer - против простого ol 'FileOutputStream
Недавно у нас было несколько разработчиков утверждать, что использование файлов с отображением памяти, реализованных в собственном коде (C/C++) и доступ через JNI, обеспечит большую производительность. Тем не менее, FileOutputStream уже использует собственные методы для своих основных методов (т. Е. Write (byte [])), поэтому он представляет собой незначительное предположение без жестких данных или, по крайней мере, анекдотических доказательств.
У меня есть несколько вопросов по этому поводу:
это утверждение действительно верно? Будут ли отображаемые в памяти файлы всегда обеспечивают ускорение ввода-вывода по сравнению с Java FileOutputStream?
ли класс MappedByteBuffer доступ из FileChannel обеспечивает такую же функциональность как родную памяти отображенной библиотека файлов, доступ к через JNI? Что MappedByteBuffer не хватает, что может привести к использованию решения JNI ?
Каковы риски использования файлов с отображением памяти для дискового ввода-вывода в приложении ? То есть приложения , которые имеют непрерывное время безотказной работы с минимальными перезагрузками (один раз в месяц, максимум). Реальные жизненные анекдоты от производства приложений (Java или нет) предпочтительнее.
Вопрос # 3 важно - я мог бы ответить на этот вопрос себе частично написав «игрушечный» приложение, перфорация тесты IO, используя различные варианты, описанные выше, но, разместив на SO я надеюсь реальные анекдоты/данные, чтобы пережевывать.
[EDIT] Уточнение - каждый день работы приложение создает несколько файлов размером от 100 МБ до 1 гигабайта. В общей сложности приложение может записывать несколько концертов в день.
Набрал этот ответ, чтобы развернуть точки. Кроме того, фраза «или просто производительность O в вашем случае» действительно застряла со мной. – noahlz
Yup, все о O. – Gary