linux中系统io函数(read,write)与c标准io函数(fgets,fputs)速度和效率的对比

起因:在学习《tcpip网络编程》第15章io缓冲部分时,对两种io的速度比较感兴趣,书中没有给出明确的测试用例,网上搜索了一下,发现有些结论竟然说速度相差不大,于是自己进行测试

策略:使用不同函数读取test.txt,复制到cpy.txt中
测试文件:test.txt , 大小17M
结论:系统io函数总用时17s,c标准函数总用时0.4s,后者效率远远超出

系统io函数(read,write)

syscpy.c

#include 
#include 
#define BUF_SIZE 3

int main(int argc, char *argv[])
{
     
	int fd1, fd2, len;
	char buf[BUF_SIZE];

	fd1=open("test.txt", O_RDONLY);
	fd2=open("cpy.txt", O_WRONLY|O_CREAT|O_TRUNC);

	while((len=read(fd1, buf, sizeof(buf)))>0)
		write(fd2, buf, len);

	close(fd1);
	close(fd2);
	return 0;
}

c标准io函数(fgets,fputs)

stdcpy.c

#include 
#define BUF_SIZE 3

int main(int argc, char *argv[])
{
     
	FILE * fp1;
	FILE * fp2;
	char buf[BUF_SIZE];
	
	fp1=fopen("test.txt", "r");
	fp2=fopen("cpy.txt", "w");

	while(fgets(buf, BUF_SIZE, fp1)!=NULL)
		fputs(buf, fp2); 

	fclose(fp1);
	fclose(fp2);
	return 0;
}

系统io函数
linux中系统io函数(read,write)与c标准io函数(fgets,fputs)速度和效率的对比_第1张图片
标准io函数
linux中系统io函数(read,write)与c标准io函数(fgets,fputs)速度和效率的对比_第2张图片

你可能感兴趣的:(网络编程,c++,linux)