Optimiser un prg d'annuaire téléphonique
Résolu/Fermé
khaoula.85
Messages postés
31
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
7 janv. 2009 à 22:55
khaoula.85 Messages postés 31 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 3 décembre 2009 - 8 janv. 2009 à 11:15
khaoula.85 Messages postés 31 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 3 décembre 2009 - 8 janv. 2009 à 11:15
A voir également:
- Optimiser un prg d'annuaire téléphonique
- Optimiser son pc - Accueil - Utilitaires
- Annuaire inversé - Guide
- Annuaire téléphonique gratuit - Télécharger - Bases de données
- Localiser un indicatif téléphonique - Guide
- Annuaire maroc telecom particulier ✓ - Forum Mobile
1 réponse
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
7 janv. 2009 à 23:22
7 janv. 2009 à 23:22
Bonsoir,
Est-ce la bonne solution ? C'est une solution, je pense qu'il y en a d'autres.
Je trouve qu'elle est pas mal, mais pas encore parfaite, on va essayer de l'améliorer encore.
Tout d'abord, sans utiliser de base de données, c'est pas terrible, mais s'il faut faire avec, c'est évident qu'il faut utiliser au maximum la mémoire, et éviter les accès disque. Ensuite, à toi de voir si charger l'intégralité des informations dans la mémoire n'est pas excessif (si ce n'est pas le cas, alors tant mieux!).
Maintenant pour entamer la recherche, je vérifie si le fichier a été modifié, si oui je le recharge ; sinon je cherche directement dans mes objets chargés en mémoire.
Ca par contre, il faut se méfier (voire même oublier). C'est simple : si ton application est fermée, tu as de très grands risques que les données en mémoire aient disparu (si ton pc s'éteint, la ram se vide; si d'autres programme ont besoin de mémoire, tes données seront effacées automatiquement car plus personne n'en a besoin).
Le mieux, c'est de charger intégralement les données en mémoire à chaque démarrage de l'application, ou lorsque le fichier est modifié (si l'application n'est pas fermée, elle devra mettre à jour ses données).
Enfin, il est nettement préférable d'utiliser une table de hachage plutôt qu'une liste pour stocker tes données : tu les retrouveras en temps quasi-constant, contre un temps linéaire avec ta liste.
A toi de trouver une bonne fonction de hachage maintenant :)
Cordialement,
Est-ce la bonne solution ? C'est une solution, je pense qu'il y en a d'autres.
Je trouve qu'elle est pas mal, mais pas encore parfaite, on va essayer de l'améliorer encore.
Tout d'abord, sans utiliser de base de données, c'est pas terrible, mais s'il faut faire avec, c'est évident qu'il faut utiliser au maximum la mémoire, et éviter les accès disque. Ensuite, à toi de voir si charger l'intégralité des informations dans la mémoire n'est pas excessif (si ce n'est pas le cas, alors tant mieux!).
Maintenant pour entamer la recherche, je vérifie si le fichier a été modifié, si oui je le recharge ; sinon je cherche directement dans mes objets chargés en mémoire.
Ca par contre, il faut se méfier (voire même oublier). C'est simple : si ton application est fermée, tu as de très grands risques que les données en mémoire aient disparu (si ton pc s'éteint, la ram se vide; si d'autres programme ont besoin de mémoire, tes données seront effacées automatiquement car plus personne n'en a besoin).
Le mieux, c'est de charger intégralement les données en mémoire à chaque démarrage de l'application, ou lorsque le fichier est modifié (si l'application n'est pas fermée, elle devra mettre à jour ses données).
Enfin, il est nettement préférable d'utiliser une table de hachage plutôt qu'une liste pour stocker tes données : tu les retrouveras en temps quasi-constant, contre un temps linéaire avec ta liste.
A toi de trouver une bonne fonction de hachage maintenant :)
Cordialement,
7 janv. 2009 à 23:42
Je vais devoir réfléchir à une fonction de hachage :)
En lisant ta réponse -je ne sais pas pourquoi- j'ai eu l'idée d'implémenter deux curseurs, le premier se pointe au début du fichier et le deuxième à sa fin. Ils parcourent le fichier en même temps et le premier qui retrouve le nom recherché envoie un signal d'interruption au deuxième. J'ai travaillé sur un projet pareil en C++, je ne sais pas si c'est faisable dans ce cas 8)
Excellente soirée !
8 janv. 2009 à 11:04
En gros, il faudra que tu parcoures une fois ton fichier linéairement pour tout stocker dans ta table de hachage (donc on ne parle pas ici de recherche de nom). Une fois que ce sera fait, quand une personne recherchera un nom, tu n'auras pas de parcours à faire, tu le récupèreras directement grâce à ta structure.
Pas besoin d'implémentation de plusieurs curseurs donc (d'autant plus qu'en terme de performances, c'est pas terrible de faire ça, car ça demande beaucoup plus d'IO au niveau du disque dur, et c'est beaucoup plus long).
Cordialement,
8 janv. 2009 à 11:15
:)