대용량(10GB 이상) 파일탐색을 시도하려 합니다.
일단, 대용량 파일을 못읽는다 어쩐다.. 원하는 파일포인터로의 이동안된다 어쩐다..
이런 문제가 아니라는 것 밝혀둡니다.
lseek(int fildes, off_t offset, int whence);
20GB의 문서를 SEEK_SET, SEEK_CUR, SEEK_END 어느것이든 파일포인터를 위치시키는 것은 매우 빠릅니다.
계산상 0.01초 안팎의 속도가 나옵니다.
문제는 이동 후 그 부분의 데이터를
read(int fildes, void *buf, size_t nbyte);
읽어들일 때 속도가 100MB이하의 경우와 100MB이상의 경우에 대한 속도차가 이상할만큼 큰 차이를 보이고 있습니다.
20만개의 라인을 읽어 메모리에 담는다고 가정할때 100MB이하에서는 0.1~0.4초의 속도를 보이는 반면,
100MB이상에서는 1GB던 10GB던 무조건 탐색시간이 30초 이상이라는 것입니다.