moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 2017
-
10 janv. 2010 à 01:37
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
19 janv. 2010 à 09:49
Bonsoir à tous,
Je voudrais juste savoir si il existe une autre solution que la récursivité pour rechercher un fichier sur un disque dur. Je suppose que oui, mais je ne trouve pas...
Et si oui, j'aimerais pouvoir l'utiliser!!!
Voilà c'est tout! Je vous remercie d'avance et attends vos réponse.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 janv. 2010 à 09:06
Bonjour,
Tout algorithme récursif peut être transformé en un équivalent non-récursif.
Donc oui, c'est faisable.
Le problème c'est que, très souvent, la transformation de l'un à l'autre est très complexe. Tellement, qu'on ne l'utilise pas... (pour la recherche d'un fichier sur le risque dur, je ne sais pas, mais j'imagine que oui sinon cette méthode serait très utilisée).
Comme dit plus haut, s'il n'y pas de table indexant les fichiers, la meilleure solution reste ici probablement une approche récursive...
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 19 janv. 2010 à 09:49
@Bidou. En effet, je suis d'accord que tout algorithme récursif peut être transformé en équivalent non-récursif. Cependant, dans des cas où l'algo récursif semble, dans son principe, le choix "évident" (recherche de fichiers, outil "pot de peinture" de paint...), l'algorithme non-récursif est généralement beaucoup moins performant.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 11 janv. 2010 à 09:58
Salut
A ma connaissance, non, il n'existe pas d'autre moyen. Sauf peut-être en touchant directement à la table d'allocation de fichiers, mais je doute que ce soit faisable en C# (et je ne sais pas du tout à quoi ça ressemble).
Pourquoi ne veux-tu pas utiliser la récursivité ?
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 20173 11 janv. 2010 à 11:32
Salut,
Je ne veux pas spécialement utiliser autre chose, c'est juste que le programme que j'ai fait, est plus lent que la recherche de windows... Je me suis donc dit qu'il existait une autre méthode de recherche et n'ayant rien trouvé j'ai posé la question...
(Un peu comme les méthodes de tri! On commence par le tri à bulle parce que c'est plus simple!)
Voilà c'est tout, je te remercie pour ton aide!!!
moi
Vous n’avez pas trouvé la réponse que vous recherchez ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 11 janv. 2010 à 11:48
c'est juste que le programme que j'ai fait, est plus lent que la recherche de windows
Sur Windows Vista et 7, les fichiers sont indexés dans une base de données, ce qui permet une recherche extrêmement rapide (quasi instantanée) des données. Sur Windows XP, il fonctionne à priori de manière récursive. Et j'aurais tendance à dire : heureusement que le système de recherche créé par un simple (n'y vois rien de péjoratif) développeur de 24 ans (probablement en à peine quelques heures) est moins performant que celui fait par Microsoft dans son OS !
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 20173 11 janv. 2010 à 15:23
Re,
Ca c'est vrai et je suis entièrement d'accord avec toi!!! Ce serait une humiliation pour Microsoft (je dit ça tout en sachant que je développe en amateur...)!
Là en l'occurence ma fonction de recherche est dans une dll donc ça m'a prit 2 minutes, à peine!