[C] Chargement en mémoire d'un fichier ?

Résolu
KunGu Messages postés 1169 Date d'inscription   Statut Membre Dernière intervention   -  
 Yoda -
Bonjour tout le monde,
J'ai une petite question aux connaisseurs de C ...
Je projette le développement d'un petit programme, et je me pose une question ...
Mon programme va utiliser une base de données qu'il va créer lui même afin de stocker quelques informations. Cette base sera contenue dans un fichier.
Est-il préférable de manipuler tout le temps ce dit fichier afin de récupérer/modifier ces informations ou plutôt de faire tout le traitement sur des variables mémoires pour ensuite à la fin écrire tout dans un fichier ?
Et bien sûr, à chaque lancement charger toute cette base de données en mémoire ?

Merci.


A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Cela dépend de plusieurs choses dont notamment la taille de la base de données.
Si c'est pas une grosse base, autant mettre tout en mémoire et écrire à la mettre à jour à la fin. Ca sera beaucoup plus performant.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Je dirai comme fiddy que ça dépend de la taille de la base. Si ta base est trop volumineuse (>~0.5*RAM) les opérations de lecture écriture de l'ensemble vont être très long. Il faut savoir que ce qui limite les performances d'un PC actuellement ce sont les accès au disque.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
penser qu'avec toutes les données en mémoire, les modifications ou ajouts seront perdus en cas de crash du programme, du PC ou de l'alimentation électrique.
Prévoir des mises à jour des fichiers.
0
Yoda
 
Bonjour,

Je ne suis pas spécialiste en C, mais je dirai que la question vaut pour tous les langages.
1)Taille de la base, OK, je ne reviens pas dessus
2)Structure de la base
Si c'est une base de type fichier texte (1 enregistrement par ligne, lignes de longueurs ingales) alors 1 seul moyen:
- tout lire
- exploiter
- tout ecrire.

Si c'est une base avec des enregistrements bien formatés (en C je crois que c'est des structures) alors on peut accéder aux enregistements directement et individuellement sur le disque, c'est rapide et mis à jour en temps réel.

Pour des traitements comme des tri sur critères et autres opérations, on peut charger uniquement la partie interessante en definissant des clés ou des index.

;)
0