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

Windows Discussion :

Vitesse de recherche de fichier en C++ avec FindNext


Sujet :

Windows

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut Vitesse de recherche de fichier en C++ avec FindNext
    Bonjour,

    Je suis entrain de développer un programme en C++ avec Builder dans le but de faire un outils de sauvegarde de fichiers.
    J'aimerais développer un outils performant et trouver un algorithme de recherche de fichier, mais pour ça il me faut toujours faire les mesures dans les même conditions.
    Mon programme utilise les fonctions FindFirst et FindNext pour rechercher les fichiers.

    Lors de la première exécution de mon programme, il faut environs 4 secondes pour rechercher 16'000 dossiers et fichiers. Ensuite plus que 0.5 secondes. Seul moyen d'avoir ma mesure de 4 secondes est de redémarrer Windows.

    J'ai fait des tests sur Windows XP et 7 et le résultat est le même.

    Pourquoi cette différence de temps ?
    Comment faire pour avoir mes 4 secondes sans devoir redémarrer ?

    Excellente journée et merci d'avance
    Stéphane

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Windows met le dossier en cache pour éviter de relire tout à chaque fois.

    Il me semble qu'il y a peut-être une commande qui peut t'aider (forcer Windows à vider le cache) dans le logiciel RAMMap...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Pour commencer excusez moi pour ma réponse "tardive"

    Merci ! Effectivement en vidant tous les cash avec RamMap je retrouve le temps mesuré lors de ma première recherche.

    Excellente fin de semaine

    Stéphane

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par lesteph Voir le message
    Mon programme utilise les fonctions FindFirst et FindNext pour rechercher les fichiers.
    il y a des fonctions C standard aussi mais en programmation Windows elles doivent inévitablement appeler ces 2 API
    Ensuite si tu veux faire ce genre d'utilitaire , il faut capter les notifications de modifications de fichier avec les bonnes API

  5. #5
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Bonjour Mat.M,

    Heeuuu moi pas avoir bien compris ce que toi avoir écris ?

    elles doivent inévitablement appeler ces 2 API
    Il n'y a donc pas d'autre choix que de passer par FindFirst et FindNext ??

    il faut capter les notifications de modifications de fichier avec les bonnes API
    Pourquoi capter des notifications ? De quels API parles tu ?


    Excellente journée

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par lesteph Voir le message
    Bonjour Mat.M,
    Pourquoi capter des notifications ? De quels API parles tu ?
    Excellente journée
    Tu réduirais considérablement le champ de recherche?
    -> http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
    Edit: par contre cela ne marche que si tu surveilles en continue, si tu exécutes ton logiciel de temps en temps, cela ne fonctionneras pas, dans ce cas FindFirst/Findnext est la solution.

  7. #7
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Je viens de comprendre de quoi tu parlais

    Merci du tuyau. Mon but est justement de faire un mix entre la solution de surveillance et recherche. Mais dans un premier temps je vais partir uniquement sur la recherche.

    Bonne journée

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

Discussions similaires

  1. Recherche de fichiers avec filtre
    Par mimic50 dans le forum MFC
    Réponses: 1
    Dernier message: 24/10/2007, 21h58
  2. Recherche de fichier avec joker
    Par defluc dans le forum Langage
    Réponses: 1
    Dernier message: 15/10/2007, 12h27
  3. Recherche de fichiers puis copier avec chemin
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 01/06/2007, 11h54
  4. [VBA]Problème avec les critères d'une recherche de fichier
    Par lucho013 dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/04/2007, 23h40
  5. Recherche des fichiers avec ksh
    Par mzt.insat dans le forum Linux
    Réponses: 3
    Dernier message: 15/05/2006, 22h51

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