2011-08-31 4 views
0

간단한 루프와 재귀를 사용하여 파일 시스템을 여러 번 반복하는 프로그램을 작성하고 있습니다.파일 구조 (C#)를 통한 다중 반복

문제는 내가 여러 번 반복하기 때문에 하드 드라이브가 특정 속도로만 작동 할 수 있기 때문에 시간이 오래 걸리는 것입니다.

이 프로세스를 최적화 할 수있는 방법이 있습니까? 필요할 때 컬렉션에 관련 정보를 모두 저장 한 다음 컬렉션을 참조하면 어떨까요?

나는 내 결과를 캐시 할 수 있다는 것을 알고 있지만 어떻게해야 될지 전혀 모른다.

편집 :

나는 주어진 디렉토리에서 얻기 위해 노력하고 정보의 세 가지 주요 부분이 있습니다

  • 디렉토리 (디렉토리 내의 각 파일의 크기의 합의 크기)
  • 디렉토리 내 파일 수
  • 디렉토리 내 폴더의 수는
,

위 항목 모두는 하위 디렉토리도 포함합니다. 현재, 각 정보 조각을 얻기 위해 주어진 디렉토리의 반복을 수행하고 있습니다. 즉, 디렉토리 당 세 번의 반복입니다.

Program Output

+2

확실한 방법이 있습니다. 반복적 인 반복으로 코드를 표시하십시오. –

+2

올바른 답을 알고있는 것 같습니다. 결과를 캐시하고 디스크 대신 해당 단어를 참조하십시오. 가능한 해결책은 – davisoa

+0

이지만, 충분한 정보를 제공하는지 (정확하게 정보로 무엇을하고 있는가? 모든 변경 사항을 최신 상태로 유지해야합니까? 예를 들어 잠깐 생각해도 괜찮습니까? 아니면 변경된 내용을보기 위해 파일 시스템을 "폴링"하고 있습니까?) ... 일부 소스 코드를 보여주십시오 ... – Yahia

답변

1

성능을 향상 시키려면 NTFS 파일 시스템의 MFT (Master File Table)에 직접 액세스 할 수 있습니다. MSDN 사회 포럼에는 훌륭한 코드 샘플이 있습니다. MFT에 액세스하는 것이 FindFirst/FindNext 파일을 사용하여 파일 시스템을 열거하는 것보다 약 10 배 빠릅니다.

희망. 도움이됩니다.

1

예는 하드 드라이브를 최소화하기 위해 할 수있는 일이 I/O가 성능이 향상됩니다 :

내 출력은 기본적으로 다음과 같습니다 스프레드 시트입니다. 나는 또한 스톱워치를 넣고 그 시간이 얼마나 걸리는지 측정하여 개선이 속도에 어떤 영향을 미치는지 알 수 있습니다.