Optimisation lire un fichier CSV, le séparateur est un ;
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:
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.