Вероятно, есть некоторое преимущество в выполнении операций записи, кратных размеру блока файловой системы, особенно если вы обновляете файл на месте. Если вы записываете менее чем частичный блок в файл, ОС должна прочитать старый блок, объединить новое содержимое и затем записать его. Это не обязательно произойдет, если вы быстро напишите небольшие фрагменты в последовательности, потому что обновления будут производиться с буферами в памяти, которые сбрасываются позже. Тем не менее, время от времени вы можете вызывать некоторую неэффективность, если вы не заполняете блок (и правильно выровненный блок: кратный размеру блока со смещением, кратным размеру блока) при каждой операции записи.
Эта проблема размера переноса не обязательно исчезнет с mmap. Если вы отображаете файл, а затем memcpy
некоторые данные на карту, вы делаете страницу грязной. Эта страница должна быть сброшена позднее: она не определена, когда. Если вы сделаете еще один memcpy
, который касается той же страницы, эта страница теперь может быть чистой, и вы снова делаете ее грязной. Так что написано дважды. Выровненные по страницам копии, кратные размеру страницы, помогут вам.