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 de fichier et strategie allocation memoire


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut lecture de fichier et strategie allocation memoire
    Bonjour,
    J'ai un fichier comprenant un nombre indeterminé de structures identiques (ce qui ne signifie pas qu'elles prennent le même nombre de caractères), mon problème est : quelle est la meilleure strategie pour lire ses données et les stocker? Sachant que je souhaite a terme posseder un tableau, trié pour une recherche plus rapide. (bsearch)

    Ce que j'ai implementé consiste à lire le fichier ligne à ligne, et pour chaque ligne creer dynamiquement une structure stockée dans un noeud de liste liee. Puis dans un second temps, connaissant le nombre de structures, de toutes les recopier dans un tableau, puis de trier celui-ci. (qsort)

    L'autre possibilitée serait de lire le fichier mais de stocker les structures dans un tableau et si celui-ci n'est pas assez grand, de le reallouer. (Mais cette operation peut etre vraiment "eprouvante" pour l''allocation memoire.)

    La premiere solution est predictible en allocation memoire en fonction du nombre de structures mais la seconde peut varier enormement en fonction du rapport nombre de structures dans le fichier et l'espace memoire allouee a chaque depassement de la capacitée du tableau ?

    Dans le cas, ou ce fichier est entierement lisible, serait il avantageux de le lire deux fois ? Une fois pour compter le nombre de structure maximale, et l'autre fois pour parser ce fichier et construire les structures?

    De meme si on fixe, un nombre de caractère par structure, est il possible de connaitre le nombre total de caractères sans avoir a le lire ? (Le desavantage etant de limiter les donnes pour les grosses structures, et d'alourdir celle plus leger mais sans gagner d'information.)

    Si vous avez des remarques, voyez d'autres methodes, n'hesitez pas a poster. D'avance merci.

    PS : Je travaille sous linux, mais cela n'implique pas de rejeter des solutions d'ordre plus generale.

    PPS: Je considere le tableau trié associé à un bsearch, la meilleure methode pour rechercher mais peut etre il y a mieux egalement. L'avantage du tableau serait que les donnees occupe egalement un nombre minimal de pages en memoires.

    (Et pour se qui se pose la question, l'utilisation d'une base de donnée n'est pas une solution retenable.)

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par TabrisLeFol
    J'ai un fichier comprenant un nombre indeterminé de structures identiques (ce qui ne signifie pas qu'elles prennent le même nombre de caractères), mon problème est : quelle est la meilleure strategie pour lire ses données et les stocker? Sachant que je souhaite a terme posseder un tableau, trié pour une recherche plus rapide. (bsearch)
    J'utilise les tableaux souples (Flexible ARRay) :

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module FARR.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Hum, oui j'utilise ASSERT. Et a priori, si cel est installé, le reste doit l'être. (Ou alors celui qui a installé cela est vraiment... ).
    ok, je vais regarder cela. Merci.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par TabrisLeFol
    Hum, oui j'utilise ASSERT. Et a priori, si cel est installé, le reste doit l'être. (Ou alors celui qui a installé cela est vraiment... ).
    ok, je vais regarder cela. Merci.
    Hein ? Tu parles de quoi ?

    Utilise le bouton

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Et, oui excuse moi. Mon post n'est pas tres clair.

    Je voulais juste dire que j'utilise deja un module de libc (qui est ASSERT). Et que donc a priori le modul FARR devrait etre installé avec.

    Module que je ne connaissait pas d'ailleurs, mais qui resout mon probleme . Ou tout du moins, me donne une implementation deja realisé de une des solutions.

    Et Donc merci.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par TabrisLeFol
    Je voulais juste dire que j'utilise deja un module de libc (qui est ASSERT). Et que donc a priori le modul FARR devrait etre installé avec.
    Tu veux dire de ma bibliothèque CLIB ? Absolument rien à voir avec libc...
    Module que je ne connaissait pas d'ailleurs, mais qui resout mon probleme . Ou tout du moins, me donne une implementation deja realisé de une des solutions.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    effectivement, je m'en suis rendu compte en lisant. Mais je n'ai pas eut le temps de corriger mon precedent post.
    J'utilise assert.h mais a priori pas le meme, je jeterais un coups d'oeil quand j'aurais le temps a CLIB.

Discussions similaires

  1. [LG]Lecture de fichier et manipulation du contenu en mémoire
    Par Jeff on the web dans le forum Langage
    Réponses: 12
    Dernier message: 22/03/2005, 15h49
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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