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

Algorithmes et structures de données Discussion :

Améliorer la recherche dans un fichier?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 17
    Points : 19
    Points
    19
    Par défaut Améliorer la recherche dans un fichier?
    Bonjour,

    Je souhaiterais contrôler l’existence d’une occurrence parmi d’autres (~400'000) et ceci un grand nombre de fois, en changeant à chaque contrôle l’élément à contrôler.
    J’ai essayé avec une base de données (index et tout le toutim). Ca fonctionne, mais pas assez rapidement.
    J’ai essayé avec une recherche dichotomique sur un fichier plat. Ca fonctionne mais pas assez rapidement.
    J’ai essayé avec un arbre binaire. Ca fonctionne mieux, mais il faut charger les données en mémoire au start de l’appli…

    Alors voilà : Est-ce qu’un lecteur aurait un embryon d’idée pour améliorer (sensiblement) cette recherche ?
    Une structure différente du fichier ? Un algho fulgurant de recherche ? Quelque chose qui pourrait me mettre sur une autre piste ?

    Au plaisir de vous lire
    Merci

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Bonjour à toi.

    Déjà, il faudrait connaître le type de tes données. Ce sont des entiers, des enregistrements possédant une clé, des chaînes de caractères ? Quelle est la taille moyenne de chaque élément ?
    Comme tu as pu réaliser une recherche dichotomique, j'en déduis que tu possèdes une clé de tri : quelle est sa nature, stp ?

    Il existe pas mal de choses pour accélérer une recherche : cependant, tu auras BEAUCOUP de mal à faire plus rapide qu'une recherche en RAM => charger tout ou partie du fichier est, à mon avis, nécessaire.

    Gagner encore plus de temps risque d'imposer l'utilisation d'une structure de type index, ou une fonction de hachage => il faut connaître la nature de la "clé primaire" (pour utiliser un terme de BD) et des données "complètes" pour trouver une optimisation valable.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    As tu essayé de mettre tes données dans un tableau de les triée et de faire une recherche dicotomique sue ce tableau
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  4. #4
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    Tu peux essayer de faire un dictionnaire sur tes donnes avec une table de hash code et ensuite un arbre binaire, mais tu va egalement devoir tout monter en memoire au debut...

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    OK merci à tous.
    Je vais garder le chargement en mémoire pour ma recherche.
    Au fait c'est de string qu'il s'agit.
    A la base c'est un dictionnaire avec clef primaire, index etc...
    Le programme en question permet de générer des anagrammes (pas seulement un mot) mais des phrases entière...

    A+ et merci

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

Discussions similaires

  1. Recherche dans un fichier texte volumineux.
    Par Actarus69 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 27/07/2005, 17h39
  2. [LG]Runtime Error lors d'une recherche dans un fichier
    Par Fraynor dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2005, 22h51
  3. Rechercher dans un fichier avec emacs
    Par ggnore dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 10h28
  4. recherche dans un fichier xml (castor)
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2004, 14h28
  5. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57

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