快速文件读取

Car*_*s00 4 c c++ linux gcc

如果我是对的,在Linux(in C/C++, gcc/g++)上,可以使用read(2)mmap(2)系统调用从常规文件中读取数据.

两个问题.read系统调用是否在mmap内部使用?什么时候比第二个快,反之亦然?

NPE*_*NPE 6

如果您按顺序读取文件,我的默认选择是重复read进入较大的缓冲区.

如果您正在访问散布在大文件周围的少量数据,则选择不太清楚,但mmap可能会导致代码更易读(因为您可以编写代码,就像文件已经在内存中一样).在这种情况下哪个会提供更好的性能很难说先验.

如果您正在编写性能关键代码,那么确定性能的唯一方法是通过对实际代码进行基准测试/分析.

  • 事实上,`read`绝对不能使用`mmap`,因为它可以在不可搜索的文件描述符(如pipe,tty或socket)上运行. (12认同)