我需要将双精度值放入文件中。因此,对于我必须输出的所有其他字符串,我使用 fputs,因为我认为 fputs 比 fprintf 更快。
但是如果我想输出双精度值,我不能用 fputs 做到这一点,所以我尝试了 fprintf。这是非常缓慢的。如果我更换 fprintf 并将 fputs("TEST",file); 放在那里,我需要更多时间。
我怎样才能像字符串一样快地输出双倍。需要我先将其转换为字符串吗?
我发现了一些转换。但是如果我使用它们,我会像使用 fprintf 一样慢。
那么我怎样才能将双精度放到一个文件中,就像我把一个字符串放到文件中一样快呢?
fputs("TEST",fileout); //FAST
fprintf(fileout, "%f",p); //SLOW
编辑:
fprintf 双倍的时间:
END.PROCESSING.DATA: 2013-04-26 08:10:33.000
END.CALC.IN.FILE: 2013-04-26 08:11:13.000
fputs 字符串的时间:
END.PROCESSING.DATA: 2013-04-26 08:14:10.000
END.CALC.IN.FILE: 2013-04-26 08:14:37.000
当时的代码:
now = time (0);
strftime (buff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&now));
printf ("END.PROCESSING.DATA: %s\n", buff);
//output file
FILE *fileout;
fileout = fopen("out.txt","w");
double p;
for(i=0; i<17000;i++){
for(j=0; j<i;j++){
for(z=0;z<400;z++){
//DO SOME WORK
}
p = 1.0;
fputs(allsubsts[i],fileout);
fputs(";",fileout);
fputs(allsubsts[j],fileout);
fputs(";",fileout);
//fprintf(fileout, "%.21g", p);
fputs("TEST",fileout);
fputs(";\n",fileout);
}
}
fclose(fileout);
now = time(0);
strftime(buff,100,"%Y-%m-%d %H:%M:%S.000", localtime(&now));
printf("END.CALC.IN.FILE: %s\n",buff);
时间之间的变化只是我把双而不是 TEST 字符串放在文件中的变化。