2011-07-19 19 views
9

używam w programie C#Problemy z wydajnością licząc pliki z System.IO.Directory.GetFiles()

System.IO.Directory.GetFiles(dirname, "*.*", System.IO.SearchOption.AllDirectories).Length;

liczyć do liczby plików w katalogu (i jego podkatalogów) na akcję . Robię to dla wielu katalogów w pętli. Problem polega na tym, że po 20-30 wywołaniach GetFiles(...).Length mój program nagle zamarł lub stał się bardzo wolny. Co może być tego przyczyną i jak można rozwiązać ten problem! Czy są jakieś obejścia?

+11

Po 20-30 wywołaniach na pewno nie (w wyniku zapętlenia) celujesz w katalog, który ma dużo większą liczbę plików, znacznie wolniej łączy sieciowych (jeśli jest zdalny), ograniczenia bezpieczeństwa itp.? To znaczy. Uderzenie wydajności nie jest wynikiem wielokrotnego wywoływania funkcji, ale w wyniku udderslying struktury plików? – Smudge202

+0

Może to zajmować pamięć w stopniu, w jakim rozpoczyna się paging! –

+1

@ smudge202 - szkoda, nie mogę przegłosować twojego komentarza. – hoodaticus

Odpowiedz

0

Czy jesteś pewien, że nie przechowujesz wyników poprzednich połączeń, które sprawiają, że aplikacja głoduje? Sprawdź alokację pamięci dla aplikacji na karcie procesów w Menedżerze zadań.

Powiązane problemy