执行文件系统块大小的倍数的写入可能有一些优势,特别是当您要就地更新文件时。如果您向文件写入的数据块少于部分数据块,则操作系统必须读取旧数据块,合并新内容,然后将其写出。如果您按顺序快速写入小块,则不一定会发生这种情况,因为更新将在内存中的缓冲区上完成,而这些缓冲区稍后会刷新。不过,如果每次写入操作没有填充块(以及正确对齐的块:块大小的倍数,偏移量是块大小的倍数),偶尔您可能会触发一些低效率。
mmap 不一定能解决传输大小的问题。如果您映射一个文件,然后将memcpy一些数据放入映射中,则会使页面变脏。该页面必须在稍后的某个时间刷新:具体时间不确定。如果您制作另一个memcpy接触同一页面的页面,那么该页面现在可能是干净的,但您又使它变脏了。所以它被写了两次。页面大小倍数的页面对齐副本将是最佳选择。