Malloc против Mmap в C

37
задан Jed Smith 15 November 2009 в 23:41
поделиться

3 ответа

Я предполагаю, что вы имеете в виду использование mmap и malloc для чтения данных из файлов. В этом случае вы в значительной степени поняли суть:

  • используя fread / fwrite, вы должны делать много вызовов ОС.
  • используя mmap, вы, кажется, получаете доступ ко всему файлу за одну операцию. Это не совсем так, потому что ОС, вероятно, отображает файл по одной странице памяти за раз, но это все равно намного быстрее.
14
ответ дан 27 November 2019 в 03:50
поделиться

mmap на самом деле не загружает файл в память, поэтому он будет загружаться быстрее, но редактирование будет медленнее.

Еще один момент: mmap не использует память, но он занимает адресное пространство. На 64-битной машине большая часть адресного пространства памяти не будет иметь памяти, поэтому вы можете загружать огромные файлы, скажем, 5 ГБ, которые вы не хотели бы использовать для malloc.

12
ответ дан 27 November 2019 в 03:50
поделиться

mmap фактически не читает файл. Он просто отображает его в адресное пространство. Вот почему это так быстро, что дисковый ввод-вывод отсутствует, пока вы не получите доступ к этой области адресного пространства.

malloc - это просто отображение адресного пространства в память

2
ответ дан 27 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: