2013-07-09 4 views
0

이 기능을 실행하면 10 분 정도 밖에 걸리지 않는 파일이 있습니다. 문제가 무엇입니까? 이 함수를 만들었습니다 :더 빨리 Directory.GetFiles()

public static List<string> FindFiles(string sFilename, string sDir, SearchOption soOption = SearchOption.AllDirectories) 
{ 
    List<string> lFiles = new List<string>(Directory.GetFiles(sDir, sFilename, soOption)); 
    return lFiles; 
} 

왜 이렇게 느린가요? 동일한 작업 (디렉토리에서 파일 찾기)을 수행하는 또 다른 방법이 있습니까?

+0

코드 이식성이 문제가되지 않으면 p/invoke를 사용하여 디렉토리 파일을 열거 할 수 있습니다. FindFirstFile로 시작할 수 있습니다. http://pinvoke.net/default.aspx/kernel32/FindFirstFile.html 및 MSDN : http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v = vs.85) .aspx –

+0

@ ZoranCausev 이미'GetFiles' /'EnumerateFiles'가하는 일입니다. –

+1

여기 코드가 문제가 아니라고 생각합니다. @MichaelBray (Directory.EnumerateFiles)의 대답을 사용하는 것이 좋습니다. 검색하는 디렉토리의 크기는 얼마입니까? 여기에 Windows의 한계에 부딪 힐 수 있습니다. 또 다른 질문 : 귀하의 컴퓨터 또는 네트워크 드라이브에 있습니까? 이것은 또한 성능에 영향을 미칩니다. – Koen

답변

2

.NET 4 이상인 경우 Directory.EnumerateFiles 대신 사용해 볼 수 있습니다. 더 빨리 돌아올 것이지만, 코드가 실행되는 총 시간은 여전히 ​​거의 같을 것이라고 생각합니다.

관련 문제