首页 > 试题广场 >

使用mmap读写文件为什么比普通读写函数要快?

[问答题]
使用mmap读写文件为什么比普通读写函数要快?
mmap函数是把文件的某一块内容直接映射到用户空间上,用户可以直接读写这一块内容 。
普通读写函数会经历一个内核缓冲过程,多出了数据拷贝的时间
发表于 2015-06-23 10:06:32 回复(0)
mmap函数直接将文件内容映射到用户空间,不需要中间的缓冲过程,普通函数需要缓冲和拷贝的过程。
发表于 2015-07-28 11:24:23 回复(0)
补充:
    mmap内存映射函数,将文件内容-->映射到进程的地址空间,通过对这段内存的读取、修改,来实现度文件的读取、修改,无需调用read、write函数。
  mmap特点是不能改变文件长度,无法写入多余的字符。
发表于 2015-07-26 01:00:25 回复(0)
mmap函数是把文件的某一块内容直接映射到用户空间上,用户可以直接读写这一块内容
普通读写函数会经历一个内核缓冲过程,多出了数据拷贝的时间。

PS:
1.无论是Unix I/O还是标准I/O库函数,它们都是通过read,write等底层系统调用实现的,而read,write都会使用内核进行缓冲。
2.我们常说的术语 “不带缓冲的I/O”指的是在用户进程空间(区别于内核进程空间)中对这两个函数不会自动缓冲

发表于 2015-06-15 23:50:56 回复(0)
mmap函数:可以将文件映射到内存中的⼀一段区域,普通函数读写文件:用户空间buffer内 核空间buffer磁盘;mmap映射之后:用户空间buffer进程内存空间,省掉了拷贝到内核空间 的时间?
发表于 2015-05-05 14:48:55 回复(0)