我需要将双精度值放入文件中。因此,对于所有其他字符串,我必须使用 fputs 输出,因为我认为并计时 fputs 比 fprintf 更快。
但如果我想输出双精度值,我无法使用 fputs 做到这一点,所以我尝试了 fprintf。这非常慢。如果我替换 fprintf 并放入 fputs("TEST",file); 我需要更多时间;
我怎样才能像字符串一样快地输出双精度数。我需要先将其转换为字符串吗?
我发现了一些转换。但如果我使用它们,我会像使用 fprintf 一样慢。
那么我怎样才能像将字符串放入文件一样快地将双精度数放入文件中呢?
fputs("TEST",fileout); //FAST
fprintf(fileout, "%f",p); //SLOW
Run Code Online (Sandbox Code Playgroud)
编辑:
使用 fprintf double 的时间:
END.PROCESSING.DATA: 2013-04-26 08:10:33.000
END.CALC.IN.FILE: 2013-04-26 08:11:13.000
Run Code Online (Sandbox Code Playgroud)
使用 fputs 字符串的时间:
END.PROCESSING.DATA: 2013-04-26 08:14:10.000
END.CALC.IN.FILE: 2013-04-26 08:14:37.000
Run Code Online (Sandbox Code Playgroud)
当时的代码:
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 …Run Code Online (Sandbox Code Playgroud) 我想知道将数据vector<string>快速写入文本文件的最佳方法,因为该数据将涉及数百万行。
我已经尝试在C ++中使用ofstream(<<)以及使用C的fprintf,但是它们之间的性能很小,因为我记录了用于生成所需文件的时间。
vector<string> OBJdata;
OBJdata = assembleOBJ(pointer, vertexCount, facePointer);
FILE * objOutput;
objOutput = fopen("sample.obj", "wt");
for (int i = 0; i < OBJdata.size(); i++)
{
fwrite(&OBJdata[i],1, sizeof(OBJdata[i].length()),objOutput );
}
fclose(objOutput);
Run Code Online (Sandbox Code Playgroud)