由于工作中频繁涉及文件IO,借周五下午的一点空隙,研究了一下标准IO库的IO效率和文件映射机制的IO效率。我用一个2G的数据文件作为测试对象,该数据文件中一共有6213834条记录,每一行为一条记录。file_fgets函数用fgets的方法来按行读取数据,file_mmap函数先使用mmap机制来把这个大文件映射到程序内存,然后再按行解析数据记录。
源代码如下:
测试结果:用mmap的机制效率比fgets会高一点,原因在于mmap少了内核空间到用户空间的拷贝操作
由于工作中频繁涉及文件IO,借周五下午的一点空隙,研究了一下标准IO库的IO效率和文件映射机制的IO效率。我用一个2G的数据文件作为测试对象,该数据文件中一共有6213834条记录,每一行为一条记录。file_fgets函数用fgets的方法来按行读取数据,file_mmap函数先使用mmap机制来把这个大文件映射到程序内存,然后再按行解析数据记录。
源代码如下:
测试结果:用mmap的机制效率比fgets会高一点,原因在于mmap少了内核空间到用户空间的拷贝操作