[C] Chargement en mémoire d'un fichier ? [Résolu/Fermé]

Signaler
Messages postés
1168
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 mars 2013
-
 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.


4 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 707
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.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 199
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.
Messages postés
18231
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
5 045
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.
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.

;)