Bonjour à tous.

Je travail dans environnement Windows.
J'effectue actuellement des essais pour une lecture d'un fichier CSV (476mo) avec comme séparateur un ; (point virgule).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
std::ifstream fichier( "c:/test.csv" );
 
    if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
    {
        std::string ligne; // variable contenant chaque ligne lue
 
        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while ( std::getline( fichier, ligne ) )
        {
            // afficher la ligne à l'écran
          istringstream iss( ligne );
			string mot;
			while ( std::getline( iss, mot, ';' ) )
			{
				if (mot=="test")
					mot = "test";
				else
					mot = "bouh";
			}
 
        }
    }
Ca met pas loin de 3/4 d'heure pour effectuer ce bout de code.
l'équivalent en C# met 40 secondes

Pourquoi une telle différence ? (ou se situe t-elle ?)
Comment optimiser.

pour ceux qui n'auraient pas compris, je lit le fichier ligne par ligne, je split la ligne par le ; puis je fais une condition sur chaque partie du split.
(c'est un truc bidon histoire de)

Merci pour votre aide.