Увеличить mapped_file или file_mapping - PullRequest
0 голосов
/ 20 ноября 2018

Я создаю файл Octree of Point Point для управления фильтрами действительно больших файлов (которые не могут быть сохранены в оперативной памяти).Пока узким местом этого метода является ввод / вывод листьев (потому что мне часто приходится писать, переписывать файлы и читать файлы ...)
Поэтому я бы хотел использовать технику отображения файлов в памяти, чтобы сделать этобыстрее, и я слышал о Boost.
Но когда я искал учебники, я видел 2 метода:
Одно использование #include <boost/iostreams/device/mapped_file.hpp>
и другое #include <boost/interprocess/file_mapping.hpp>.

В моем случае мне придется писать действительно часто входящие векторы трехмерных точек в файл, затем получать всю информацию в этих файлах и воссоздавать векторы из них.Много операций ввода-вывода, вероятно, с большим количеством файлов.
Мне было интересно, какой мне использовать?В каком случае я должен использовать один вместо другого?

Спасибо!

PS: Есть ли разница между файлом Boost Iostream Mapped и Boost Interprocess Mapped File? Я видел этот пост, но он мне не помогаетдля моей конкретной проблемы.

1 Ответ

0 голосов
/ 20 ноября 2018

Однако вы можете использовать любой из них:

  • Используя только объект boost::iostreams::mapped_file, вы получите файл, отображенный в память с интерфейсом массива.Это не становится проще, чем это.Вы также можете использовать декоратор boost::iostreams::stream для присоединения интерфейса std::iostream к отображаемому файлу.
  • Принимая во внимание, что boost::interprocess::file_mapping требует использования boost::interprocess::mapped_region для сопоставления file_mapping в память.Этот метод является более гибким, поскольку позволяет отображать части файла (а не весь файл) с различными разрешениями доступа, но он также более сложный.
...