Lenteur de ifstream contre fscanf
Salut,
je suis en train de me faire un micro programme pour lire en boucle des fichiers qui sont stockés dans des dossiers. J'ai testé les deux écriture, une avec ifstream et l'autre avec fscanf, et les temps d'executions sont vraiment en faveur de fscanf. Le C++ est-il ci haut niveau par rapport au C en ce qui concerne les flux bas niveau?
Appelé plus de 6000 fois
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| void ReadField(const string& directory,const string& name,complex<double>** field,int nb_source)
{
double re,im;
string str_i;
string str_r;
str_i=directory+"/"+name+"_i.dat";
str_r=directory+"/"+name+"_r.dat";
FILE* f_in_i=fopen(str_i.c_str(),"r");
FILE* f_in_r=fopen(str_r.c_str(),"r");
//ifstream f_in_i(str_i.c_str()); if(!f_in_i){AbordProgram((string)("Can not open file_i in "+directory));}
//ifstream f_in_r(str_r.c_str()); if(!f_in_i){AbordProgram((string)("Can not open file_r in "+directory));}
for(int i=0; i<nb_source; ++i)
{
for(int j=0; j<nb_source; ++j)
{
//f_in_i >> im;
//f_in_r >> re;
fscanf(f_in_i,"%lf",&im);
fscanf(f_in_r,"%lf",&re);
field[i][j]=cmplx(re,im);
}
}
fclose(f_in_i);
fclose(f_in_r);
//f_in_i.close();
//f_in_r.close();
} |