Améliorer les performances pour l'énumération des fichiers et dossiers utilisant .NET
J'ai un répertoire de base qui contient plusieurs milliers de dossiers. À l'intérieur de ces dossiers, il peut être compris entre 1 et 20 sous-dossiers contenant entre 1 et 10 fichiers. Je voudrais supprimer tous les fichiers qui sont depuis plus de 60 jours. J'ai été en utilisant le code ci-dessous pour obtenir la liste des fichiers que je dois supprimer:
DirectoryInfo dirInfo = new DirectoryInfo(myBaseDirectory);
FileInfo[] oldFiles =
dirInfo.GetFiles("*.*", SearchOption.AllDirectories)
.Where(t=>t.CreationTime < DateTime.Now.AddDays(-60)).ToArray();
Mais je laisse cette course pendant environ 30 minutes et il n'a pas encore fini. Je suis curieux de savoir si quelqu'un peut le voir de toute façon que je pourrait améliorer la performance de la ligne ci-dessus ou si il y a une autre façon, je devrais être en train d'approcher ce entièrement pour une meilleure performance? Des Suggestions?
source d'informationauteur Abe Miessler
Vous devez vous connecter pour publier un commentaire.
C'est (probablement) aussi bon que ça va arriver:
Changements:
DateTime
constante, et donc moins de charge CPU.EnumerateFiles
.Doit s'exécuter dans une plus petite quantité de temps (pas sûr comment beaucoup plus petit).
Voici une autre solution qui pourrait être plus rapide ou plus lente que la première, elle dépend des données:
Ici, il déplace le parallélisme dans le dossier principal de l'énumération. La plupart des changements à partir de ci-dessus s'appliquent aussi.