IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lecture CSV en C++, le faire � comme il faut �


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par d�faut Lecture CSV en C++, le faire � comme il faut �
    Bonjour,

    Je vous pr�sente un article qui, � partir d�un probl�me simple, pr�sente la m�thodologie et les techniques � mettre en �uvre pour arriver � une solution performante, r�utilisable.

    http://julien-blanc.developpez.com/t...cture-csv-c++/

    Bonne lecture

  2. #2
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ing�nieur en syst�mes embarqu�s
    Inscrit en
    Juin 2004
    Messages
    1 306
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par d�faut
    Bonjour,

    c'est un tr�s bon sujet d'article ; la lecture d'un fichier CSV (un vrai, avec tous les pi�ges qu'il peut contenir) est parfois faite de mani�re bien bancale .

  3. #3
    Membre tr�s actif
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activit� : nop
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Par d�faut importer un fichier CSV en c++
    tr�s bon article !

    un BigUp! pour la partie qui traite de l'importance de la taille du fichier, qui va conditionner la m�thode de lecture. On ne le dira jamais assez traiter un fichier de 400Go sur une machine perso n'est pas pareil que de le faire sur un serveur virtualis� mutualis� ou de prod. Sans parler du probl�me de cache, de m�moire, du temp, de ressources par utilisateur.....

    Une petite astuce personnel:
    maintenant je traite le probl�me d'encodage manuellement avec un �diteur � part, car souvent, trop souvent on tombe sur des fichiers CSV multi-encodage qui ont �t� mal g�r�s par les exportateurs....
    Oui alors avant l�entr�e dans la boucle, penser � une fonction juste pour tester l�int�gralit� du bon codage (et par la m�me occasion l�int�gralit� du fichier au cas o� il est d�fectueux)

    Une petite am�lioration pour l'article: vous ne parlez pas de la source (disque dur, r�seau, nas, lien dropbox, lien cloud..etc) du fichier et de son impact, de son traitement en t�che de fond plut�t qu'en foreground.

  4. #4
    Membre �clair�
    Homme Profil pro
    Cocher moderne
    Inscrit en
    Septembre 2006
    Messages
    50
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : Oman

    Informations professionnelles :
    Activit� : Cocher moderne

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par d�faut
    Excellent, j'en avais justement besoin !
    Merci beaucoup ! �a va m'�viter quelques heures d'arrachage de cheveux et quelques litres de caf�...

  5. #5
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Citation Envoy� par MichaelREMY Voir le message
    Une petite am�lioration pour l'article: vous ne parlez pas de la source (disque dur, r�seau, nas, lien dropbox, lien cloud..etc) du fichier et de son impact, de son traitement en t�che de fond plut�t qu'en foreground.
    La partie VI en parle, ou du moins donne des �l�ments de r�ponse : la source des donn�es n'a pas d'impact (autre que les performances : on peut pas traiter les donn�es plus rapidement qu'elles arrivent).

    Si tu veux faire tes traitements de mani�re asynchrone, rien ne change non plus
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Threadpool pool; // ou autre
     
    CSVParser parser;
    parser.onField([](std::string const& f) { std::cout << f << std::endl; }); // traitement synchrone
    parser.onField([&](std::string const& f) { pool.enqueue([f]() { std::cout << f << std::endl; }); }); // traitement asynchrone
     
    std::vector<char> data;
    for(auto c: data) {
       parser.consume(c);
    }

  6. #6
    Membre tr�s actif
    Homme Profil pro
    nop
    Inscrit en
    Mars 2015
    Messages
    436
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activit� : nop
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 436
    Par d�faut
    Citation Envoy� par Iradrille Voir le message
    La partie VI en parle, ou du moins donne des �l�ments de r�ponse : la source des donn�es n'a pas d'impact (autre que les performances : on peut pas traiter les donn�es plus rapidement qu'elles arrivent).

    Si tu veux faire tes traitements de mani�re asynchrone, rien ne change non plus
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Threadpool pool; // ou autre
     
    CSVParser parser;
    parser.onField([](std::string const& f) { std::cout << f << std::endl; }); // traitement synchrone
    parser.onField([&](std::string const& f) { pool.enqueue([f]() { std::cout << f << std::endl; }); }); // traitement asynchrone
     
    std::vector<char> data;
    for(auto c: data) {
       parser.consume(c);
    }
    oui oui, je voulais juste dire qu'avant d'importer le fichier, il faut s'assurer, ou plut�t estimer la longeur de la large pour ne pas monopoliser (ou plut�t ennuyer l'utilisateur devant l'�cran) et ainsi traiter le tout en background permettant ainsi d'afficher une chrono, une jauge. Comem fait maintenant Youtube pour l'import des vid�os. Rappelez-vous avant (dans les ann�es 2000) o� on attendez devant l'�cran que l'upload se finisse pour remplir le formulaire et ensuite faire autre chose.... C'es ce point l� que je voulais mettre en avant : estimer avant de travailler, m�me un traitement d'apparence simple...
    c'est un tr�s bon article-tuto que vous avez �crit l�.

  7. #7
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Citation Envoy� par MichaelREMY Voir le message
    oui oui, je voulais juste dire qu'avant d'importer le fichier, il faut s'assurer, ou plut�t estimer la longeur de la large pour ne pas monopoliser (ou plut�t ennuyer l'utilisateur devant l'�cran) et ainsi traiter le tout en background permettant ainsi d'afficher une chrono, une jauge...
    Ce qui n'a strictement aucun rapport avec le parseur, mais avec la mani�re dont il est utilis�, donc compl�tement hors de propos.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

Discussions similaires

  1. Que peux-t'on faire comme application ?
    Par lalystar dans le forum Java ME
    R�ponses: 2
    Dernier message: 11/12/2004, 05h36
  2. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    R�ponses: 5
    Dernier message: 06/11/2003, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo