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).
Ca met pas loin de 3/4 d'heure pour effectuer ce bout de code.
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"; } } }
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.
Partager