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

Ploc wrote:
> 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.



Précision importante
- même machine, même charge
- gcc et g++ v4.1.2
- mêmes options d'optimisation -O2 (même si ca ne semble pas beaucoup
jouer ici).

  Réponse avec citation
 
Page generated in 0,04789 seconds with 9 queries