본문 바로가기

지식/VC++

메모리 맵 파일과 엔디안 또는 비트 오더링..

메모리 맵 파일을 사용하여 대 용량의 파일에 대한  i/o 속도를 향상을 꽤하고 있었다.
하지만 어떤 시점(생성이라든지..)에서는 속도에 관계없이 메모리 리소스사용을 자제하고자
직접 파일을 생성하였다.

가령 100메가의 파일에 데이터를 입력시에는

*메모리 맵 사용
100메가의 덤프 파일을 생성-> 메모리 맵핑 -> 데이터 입력 -> 맵핑 해제

의 순서를 거쳤다면

*순수 파일 io 사용
0에서부터 100메가가 될때 까지 데이터를 순차적으로 기록.

내가 볼 때는 분명 다른것이 없었지만
두 파일의 포맷이 달라서 한참을 고생하였다.
대체 내가 뭘 잘못한건지...

둘 다 물리적 파일을 토대로 데이터를 입력하지만
메모리 맵 파일의 경우 맵 핑된 시점에서
파일 자체도 메모리로 인식되어
실제 데이터가 리틀 엔디안으로 인식되어 기록된다.
하지만 내가 fwrite 로 파일에 쓰기 작업은 진행하면
실제 데이터 순서대로 쓰여진다...