如果我是对的,在 Linux 上(在 C/C++、gcc/g++
中),可以使用 read(2)
或 mmap(2)
系统调用。
两个问题。 read
系统调用在内部使用 mmap
吗?什么时候第一个比第二个快,反之亦然?
最佳答案
如果您按顺序读取文件,我的默认选择是重复读取
到一个较大的缓冲区。
如果您正在访问散布在一个大文件中的少量数据,选择就不太清楚了,但是 mmap
可能会导致代码更具可读性(因为您可以像文件一样编写代码已经在内存中)。在这种情况下哪个会提供更好的性能很难先验地判断。
如果您正在编写性能关键代码,那么确定性能的唯一方法是对实际代码进行基准测试/分析。
关于c++ - 快速读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8809607/