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

MFC Discussion :

CFile::Read() est-il coûteux ?


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 65
    Points
    65
    Par défaut CFile::Read() est-il coûteux ?
    Je travaille sur des données extraites de fichiers et la vitesse de traitement importe pour mon application.
    Je suis obligé de traiter de petits volumes de données (de l'ordre de 500Ko) à la fois sur des fichiers de plusieurs dizaines de Mo.

    Je voulais savoir si faire des file.Read() tous les 500Ko est couteux en temps par rapport à mettre en place un buffer circulaire.
    Du genre je lis 10Mo à la fois dans le fichier dans un thread et je traite 500Ko à la fois dans un autre (et quand j'ai presque tout traité je recharge 10 Mo).

    Lors de mes tests j'arrive à peu près à la même chose, mais je suis pas sur que mon buffer circulaire soit une réussite ...

    En gros dois-je retravailler le truc ou alors je laisse les CFile::Read() ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut , une approche concurrentielle peut te faire gagner du temps en utilisant TBB et ce qui ressemble a un pattern pipeline .
    genre un train de données arrive un thread s'en occupe , puis un autre il y a un modèle pour ça, l'avantage est que tu travailles sur tous les cœurs de ta machine à la fois.
    j'ai plus l'exemple en tête faudrait que je re-consulte le livre.
    A toi de voir si l'aventure en vaut la peine ...
    [edit]
    j'ai retrouvé la doc en ligne :
    http://www.threadingbuildingblocks.o...s.php#pipeline
    [/edit]

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 65
    Points
    65
    Par défaut
    Merci je vais regarder ça

    J'ai encore du simple cœur dans la bécane, alors je connaissais pas TBB, mais bon pourquoi pas si mettre.
    En tout cas je vais surement "threader" le programme pour gérer la lecture et le traitement de donnée en concurrence.

    On verra la hausse de perf' que j'obtiens, mais même un peu c'est toujours ça !

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    sur du mono-coeur tu ne gagneras rien avec tbb , par contre quand tu vas passer ton code non optimisé sur une machine récente genre 2 ou 4 cœurs, la tu vas pleurer des perfs ...
    il suffit de regarder la charge CPU pour le constater.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi le Wait Time per Read est elevé ?
    Par lanbok dans le forum SAP
    Réponses: 4
    Dernier message: 21/01/2008, 16h52
  2. read() est-il standard ?
    Par paillepailles dans le forum C
    Réponses: 16
    Dernier message: 09/01/2008, 18h13
  3. Bug eclipse ? Local Variable is never read est à ignore
    Par jlong dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 18/09/2007, 17h34
  4. Trouver si une réponse à un read est numérique
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 15/10/2004, 18h22
  5. read committed, serializable... et par défaut k'en est-il?
    Par superdada dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 01/12/2003, 19h58

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