우리는 약 2 ~ 3 백만 개의 XML 파일이있는 상당히 큰 디스크 배열을 가지고 있습니다. 디스크는 NTFS로 포맷되며 와일드 카드를 사용하여 파일 시스템을 검색하려고합니다. * SomePartOfTheFilename *과 같은 것이 일반적인 검색 쿼리 일 것입니다.NTFS에서 파일 검색
.Net을 사용하고 있는데 DirectoryInfo를 사용하면 속도가 느린 것으로 나타났습니다.
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
List<FileInfo> fileInfos = directoryInfo.GetFiles(searchString, SearchOption.AllDirectories).ToList();
루프 및 재귀 사용 또한 매우 느립니다.
NTFS 인덱스를 직접 검색하는 데 사용할 수있는 저급 API 호출이 있습니까?
명령 줄에서 dir * SomePartOfTheFilename */s를 사용하면 거의 즉각적입니다. 레버리지를받을 수있는 것이 있습니까? 당신이 인덱싱 서비스를 사용할 수 있는지
cygwin에서 _find_도 빨리 끝나거나 .net 코드 속도와 비슷합니까? 그렇다면 cmd.exe와 사전 빌드 된 인덱스 사이에 MS와의 통합이 가능할 것입니다. –
인덱싱 서비스 (아래 지적 된) 또는 일부 가정용 추출 솔루션을 사용하여 외부 인덱스를 구축하지 않은 특별한 이유가 있습니까? 파일 시스템을 느리게 검색하는 것뿐만 아니라 디스크 헤드가 경쟁 요청에 대한 서비스를 시도 할 때마다 다른 작업을 느리게 할 수 있습니다. –
우리는 NTFS 인덱스가 충분히 빠르면 파일에 대한 자체 인덱스를 만들지 만 먼저 다른 옵션을 먼저 탐색하려고합니다. – Tim