Afficher un message
Vieux 03/05/2008, 20h46   #1
Ploc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut performance de lecture de fichiers formatés

Bonjour,

j'ai un fichier du style :

label 2.3 4.5 5.6
label2 1.2 1.0 -2.
....


qui est assez gros (près d'1 Go).

J'avais un programme C à base de fscanf.
En passant de C (à base de fscanf) à c++ avec ifstream (voir le code en
bas), je passe de 1min 40s en C à 3min 10s en c++.

Je trouve que ca fait un gap quand même.
Comme je n'ai pas trop d'expérience sur les fichiers en c++, je m'en
remets à vous.

Vous pouvez me dire si vous voyez des choses à améliorer pour avoir de
meilleures performances (plus proches du C)?

Je joins un bout de code avec uniquement la lecture du fichier et
l'extraction des données.
Le code C fait la même chose mais avec fscanf et feof. Je peux le donner
si ca peut aider.


#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char ** argv)
{
ifstream ifs("fichier.toto");

float x,y,z;
string lc;

int count =0;
int i;
while (! ifs.eof())
{
ifs >> lc>>x>>y>>z;
if (!ifs.eof())
{
count ++;
}
}
cout <<"count = "<<count<<endl;

return 0;
}


Merci d'avance.

Ploc.
  Réponse avec citation
 
Page generated in 0,04509 seconds with 9 queries