[C++] 파일버퍼(시스템버퍼) 사이즈 조절 방법..
UNIX SYSTEM PROGRAMMING
HAVILAND,GRAY,SALAMA
Second Edition이란 책이 있습니다.
21페이지에 보면
파일버퍼의 사이즈에 따라 달라지는 reading 시간이 나옵니다.
BUFSIZE Real time
1________0:24:49
64_______0:0.46
512______0:0.12
4096_____0:0.07
8192_____0:0.07
이런식으로 나옵니다.
테스트를 직접 해보고 싶어서
17메가 짜리 text파일을 만든후
#include<iostream> #include<fstream> #include<time.h> using namespace std; int main(){ char BUF[50000]={0}; int start = 0 ,end = 0; ifstream file("read.in",ios::in); start = time(0); while(file.eof() == 0){ file.read(BUF,50000); } end = time(0); cout << end-start; return 0; }
이러한 소스를 이용해서 시간을 측정해 봤습니다.
결과는 16초인데요..
buffer size를 어떻게 바꾸는지 모르겠습니다.
예전 MS-DOS 시절에 메모리 관리차원에서
config.sys을 수정했던 기억이 났습니다.
dos=high, umb
files=20
break=on
buffers=20
이런식으로 files 와 buffers 에 값을 줬었는데요..
혹시 그때 설정했던 이 값들이
files :열 수 있는 최대한의 파일갯수
buffers : 파일 버퍼 사이즈
이걸 의미하지 않을까 하는 생각이 들었습니다.
그래서 지금의 컴퓨터 ( 윈98 ) 에서
config.sys를 수정하고 다시 테스트를 해봤습니다.
buffers를 1로 했지만 결과는 16초로 동일했습니다.
dos시절에 수정했었던 config.sys가 엉터리였나요?
아니면 지금의 시스템과는 달라서인가요..
아니면 files와 buffers의 의미가 제가 생각한것과 다른것인가요?
혼란스럽습니다.
file buffer size 조절방법
설명부탁드립니다.
댓글 달기