2009-03-13 4 views

답변

2

열기 및 읽기보다 파일 매핑을 설정하는 데 더 복잡한 코드가 필요합니다. 파일 매핑은 파일 섹션에 무작위로 액세스하기위한 것입니다. 필요하지 않으면 파일 매핑을 신경 쓸 필요가 없습니다.

또한 다른 플랫폼에 코드를 이식해야하는 경우 파일 매핑을 사용하지 않으면 훨씬 쉽고 빠릅니다.

13

ReadFile/WriteFile을 사용하면 결정 론적 오류 처리 의미가 있습니다. 메모리 매핑 된 파일을 사용하면 예외가 발생하여 오류가 반환됩니다.

또한 메모리 매핑 된 파일을 디스크에 기록해야하는 경우 (또는 네트워크가 더 나빠진 경우) 메모리를 읽는 데 몇 초 (또는 심지어 분) 걸릴 수 있습니다. 응용 프로그램에 따라 예상치 못한 실속이 발생할 수 있습니다.

ReadFile/WriteFile을 사용하는 경우 비동기 형식의 API를 사용하여이 동작을 제어 할 수 있습니다.

ReadFile을 사용하는 경우, 특히 I/O 패턴을 예측할 수있는 경우보다 결정 성있는 성능을 얻을 수 있습니다. 메모리 매핑 I/O는 종종 랜덤 한 반면 ReadFile은 거의 항상 직렬입니다 (ReadFile은 현재 파일 위치에서 읽기 때문에 현재 파일 위치를 앞당긴다).

2

파일 매핑의 큰 장점은 시스템 캐시에 영향을 미치지 않는다는 것입니다. 응용 프로그램이 ReadFile을 사용하여 과도한 I/O를 수행하면 시스템 캐시가 커져서 실제 메모리가 더 많이 소모됩니다. OS가 32 비트이고 메모리가 1GB 이상인 경우 32 비트 Windows에서 시스템 캐시의 크기가 1GB로 제한되므로 운이 좋은 것보다 큽니다. 그렇지 않으면 시스템 캐시가 사용 가능한 모든 물리적 메모리를 소비하게되고 메모리 관리자는 곧 다른 프로세스의 페이지를 디스크로 제거하기 시작하여 실제로 디스크를 줄이는 대신 디스크 작업을 강화합니다. 이 효과는 캐시 크기가 사용 가능한 실제 메모리로만 제한되는 64 비트 Windows에서 특히 두드러집니다. 반면에 파일 매핑은 시스템 캐시의 과도한 증가를 초래하지 않으며 동시에 성능을 저하시키지 않습니다.