📄 timewrite.c
字号:
#include "ourhdr.h"#include <string.h>#include <sys/times.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#define MAXBUFSIZE 128*1024
int main(int argc,char *argv[]){ int count,n; int fd; char buf[MAXBUFSIZE]; size_t bufsize; struct tms start_t,end_t; //起始的相对时间 clock_t start,end,utsum,stsum,ctsum; float clktck,ut,st,ct; if(argc<2){ err_sys("usage:boject file needed!\n"); exit(0); } else if(argc==2){ //异步 if((fd=open(argv[1],O_WRONLY|O_CREAT))<0){ err_sys("open error\n"); exit(1); }
}
else if(argc==3){ //同步
if(!strcmp(argv[2],"sync")){
if((fd=open(argv[1],O_WRONLY|O_SYNC|O_CREAT))<0){//同步写入
err_sys("open error\n");
exit(1);
}
}
else{
err_sys("argument 2 ERROR!\n");
exit(0);
}
}
else{
err_sys("too many argument!\n");
exit(0);
}
clktck=(float)sysconf(_SC_CLK_TCK); //所运行系统每秒的滴答数,用于计算时间
printf("\nBUFFSIZE USER SYSTEM CLOCK REPEAT\n");
for(bufsize=1024;bufsize<=MAXBUFSIZE;bufsize*=2){
count=0;
utsum=0;
stsum=0;
ctsum=0;
lseek(STDIN_FILENO,0,SEEK_SET);
while((n=read(STDIN_FILENO,buf,bufsize))>0)
{
count++;
start=times(&start_t);
if((write(fd,buf,n))<0) printf("write error");
end=times(&end_t);
utsum+=(end_t.tms_utime-start_t.tms_utime)+(end_t.tms_cutime-start_t.tms_cutime);
stsum+=(end_t.tms_stime-start_t.tms_stime)+(end_t.tms_cstime-start_t.tms_cstime);
ctsum+=end-start;
}
if(n<0) printf("read error");
ut=utsum/clktck;
st=stsum/clktck;
ct=ctsum/clktck;
fprintf(stderr,"%8lu %7.2f %7.2f %7.2f %8d\n",bufsize,ut,st,ct,count);
}
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -