linux下10G大的文件一次写磁盘100k,怎样做速度最快?

quwei197874 2012-11-05 11:12:47
问题如上面题目,请各位指教?
...全文
401 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2012-11-05
  • 打赏
  • 举报
回复
都规定好一次写入100K了, 那还有什么好说呢. 相对于内存的读写, 磁盘读写是很慢的, 所以写的次数越少越快.
mujiok2003 2012-11-05
  • 打赏
  • 举报
回复
1. 使用system call write,不用标准库中的IO,以减少内存拷贝。这个过程中应该需要调整buffe大小(比如内核中缓存大小) 2.有些系统可以并发写文件的不同部分。
qingcairousi 2012-11-05
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
都规定好一次写入100K了, 那还有什么好说呢. 相对于内存的读写, 磁盘读写是很慢的, 所以写的次数越少越快.
错了吧,一次写一个block是最快的。
图灵狗 2012-11-05
  • 打赏
  • 举报
回复

#include <stdio.h>

#define LEN	(100 * 1024)

unsigned char buf[LEN];

int main(int argc, char* argv[])
{
	FILE* file;
	unsigned long i;

	if((file = fopen("10GB.dat", "wb")) == NULL)
		return -1;

	for(i = 0; i < 5 * 1024 * 1024; i++)
		fwrite(buf, sizeof(unsigned char), LEN, file);

	fclose(file);

	return 0;
}

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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