如何控制每次读盘的大小,以减少IO的次数

lishikai500 2014-05-01 09:43:58
我需要很多次的读一个文件上相对随机的位置,每一次调用fseek,如果这块地址没在内存中,就会出现page fault,而不得不进行IO的读取。
IO的读取很消耗时间,我系统的内存页的大小是4096 也就是4k,是否每次的IO只读取了4k?
c语言有没有什么方法可以强制要求 磁头每次读取512k,并写到内存上,这样就可以大大减少IO的次数。(linux 系统的)

求大神讲解。
...全文
222 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishikai500 2014-05-01
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
设置流的buf大小: http://www.cplusplus.com/reference/cstdio/setvbuf/
谢谢大神 非常有用!!!
mujiok2003 2014-05-01
  • 打赏
  • 举报
回复
/* setvbuf example */
#include <stdio.h>

int main ()
{
  FILE *pFile;

  pFile=fopen ("myfile.txt","r);

  setvbuf ( pFile , NULL , _IOFBF , 1024 * 512 );

  // File operations here

  fclose (pFile);

  return 0;
}
mujiok2003 2014-05-01
  • 打赏
  • 举报
回复
设置流的buf大小: http://www.cplusplus.com/reference/cstdio/setvbuf/

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧