[问题] fwrite 写入时间异常

楼主: makemilk (高原)   2014-06-12 01:18:03
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux Scientific 6.2 , GCC 4.4.6
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
由于研究的关系我写了一个测试fwrite的小程式,每次写入51200Byte大小的binary资料
,程式码如下,结果显示大部分每次花0.1ms,但有时候会有100~200ms的出现,不知道
这种现象造成的原因是什么? 如果需要长时间稳定写入时间,是否有其他方式可以处理?
程式码(Code):(请善用置底文网页, 记得排版)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(){
FILE *time;
FILE *test;
float time_use=0;
struct timeval start;
struct timeval end;
int size;
int i=0;
test=fopen("file.dat","wb");
time=fopen("time1.txt","w");
for(i=1;i<40000;i++){
size=51200;
unsigned char a[size];
gettimeofday(&start,NULL);
fwrite(a,sizeof(char),size,test);
gettimeofday(&end,NULL);
time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);
fprintf(time,"size=%d\ttime=%f\n",size,time_use);
}
fclose(time);
fclose(test);
return 0;
}
作者: diabloevagto (wi)   2014-06-12 01:35:00
我猜是实际写到硬盘才花较久
作者: TeaEEE (爱不趴 不爱趴)   2014-06-12 01:36:00
时间的差异应该是硬盘的暂存造成的
作者: h520 (恩哈恩哈恩哈哈)   2014-06-12 06:51:00
组NAS/RAID 使用logical volume理论上比较稳 但是要慎选厂牌
作者: bobhsiao (↙小臃肿.人肥言轻↗)   2014-06-12 17:17:00
fwrite会先进buffer, 不妨试 open/write
作者: damody (天亮damody)   2014-06-12 18:46:00
正常的换ssd吧

Links booklink

Contact Us: admin [ a t ] ucptt.com