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

Langage Delphi Discussion :

Méthode optimisée de comparaison de donnees


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut Méthode optimisée de comparaison de donnees
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const
      FichierMax = 1000000;
     
    type
      TFichier = record
        Nom, Repertoire: string;
        Taille: integer;
        Date: TDateTime;
      end;
     
    private
      Source: array[1..FichierMax] of TFichier;
      Destination: array[1..FichierMax] of TFichier;
    Ce que que je vais vous demander, je peux le faire là n'est pas mon soucis. Mon soucis est de savoir comment je peux optimiser l'opération.

    Voila j'ai deux listes (source et destination) faisant l'inventaire des fichiers contenus dans un répertoire et ses sous répertoires. Je stocke les informations sous le type TFichier.

    Je souhaite faire une comparaison des deux listes :
    - en supprimant les doublons dans les deux listes
    - en repérant les fichiers des tailles différentes
    - en repérant les fichiers de date (de modification) différentes
    - en repérant les fichiers présents que dans une seule liste

    Pourriez vous m'indiquer une méthode de comparaison qui soit rapide.

    Moi je compare chaque fichier d'une liste à l'autre liste (FichierMax² comparaisons max...) et ca peut prend énormement de temps !

    Merci

    PS : je bosse avec une version perso...

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Déjà en triant les deux listes ca te permettrait d'aller un peu plus vite.
    Puis faire une recherche de type dichotomique (pas sûr de l'écriture) sur le nom du fichier et de faire aprés tes comparaisons.

    Je pense aussi que ca doit prendre beaucoup de temps au vu que tu charges les deux répertoires en mémoires, pourquoi ne pas en charger qu'un seul puis traiter l'autre au pas à pas ?

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Quand tu dis "doublons" ou "fichiers présents que dans une seule liste", tu parles au niveau du nom de fichier ou du contenu du fichier ?

  4. #4
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Malatar
    Les listes sont déjà plus ou moins triées du fait qu'elles soient constituées à partir de la même procédure.

    Reisubar
    "Doublon" : fichier présent dans les deux listes en ayant le même nom, le même répertoire, de la même taille et de la même date de modification.

    "fichiers présents que dans une seule liste" : fichier présent que dans une seule liste (soit source soit destination)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Déjà, une liste est triée ou elle ne l'est pas

    Ce que tu peux faire c'est fusionner les deux listes avec une variable indiquant la provenance, tu trie cette liste sur les critères rep, nom de fichier, taille et eventuellement date. Après tu parcours cette liste pour voir si deux entrées consécutives contiennent le même fichier.

  6. #6
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    ok je vais essayer de faire ca !

Discussions similaires

  1. Optimisation macro comparaison / Plantage
    Par Geoffray69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2013, 10h00
  2. méthode/outil de comparaison de chaînes de caractères
    Par saucer dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/12/2010, 09h03
  3. Optimisation de comparaison de chaines
    Par rockt13 dans le forum C++
    Réponses: 37
    Dernier message: 23/11/2010, 12h53
  4. Algo pour optimiser le stockage de donnéees
    Par winzzz dans le forum C++
    Réponses: 16
    Dernier message: 12/10/2009, 16h01
  5. [XL-2000] Optimisation de comparaison de (long) tableau
    Par kaahlrv dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/07/2009, 17h03

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