일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 맞고게임
- 게임 개발
- 티스토리 초대장
- 영어단어게임
- 보드게임
- 써치아이
- 틀린그림찾기
- 서치아이
- 포커
- 게임 외주
- 윈윈전략
- 프로그램 개발
- 카일레라서버
- 영어단어
- 온라인게임
- 윈윈
- 판매
- 상호링크
- 프로그램 외주
- 포커게임
- 카일레라
- 맞고
- 옥션해킹
- holdem
- MAME
- 홀뎀
- Mame32
- 고스톱
- 틀린그림 찾기
- 옥션소송
- Today
- Total
kyuseo의 게임 프로그래밍
CFile, HFILE, FILE 대용량 파일 로드(읽기) 속도 비교 실험 본문
개요.. |
CFile 보다 FILE 가 약 10배 빠르다던 글이 있어서 CFile, HFILE, FILE 대용량 파일 로드(읽기) 속도를 비교, 실험 해 보았습니다.
실험방식 |
- 약 20M 바이트의 파일 3개의 실험 재료로 준비한다.
- FILE, CFile, HFILE 을 3회 이상 테스트한다.
코드 |
for( int i=0; i<3; i++ ) { // // FILE 을 이용한 읽기 쓰기 시험 // { FILE* fp = fopen( "1.dat", "rb" );
fseek( fp, 0, SEEK_END ); int size = ftell( fp ); fseek( fp, 0, SEEK_SET );
BYTE* pBuffer = new BYTE[ size ];
DWORD start = GetTickCount(); fread( pBuffer, size, 1, fp );
CString str; str.Format( "FILE %d ms", GetTickCount() - start ); AfxMessageBox( str );
fclose( fp ); delete[] pBuffer; }
// // CFile 을 이용한 읽기 쓰기 시험 // { CFile file; file.Open( "2.dat", CFile::modeRead );
int size = file.GetLength(); BYTE* pBuffer = new BYTE[ size ];
DWORD start = GetTickCount();
file.Read( pBuffer, size );
CString str; str.Format( "CFile %d ms", GetTickCount() - start ); AfxMessageBox( str );
file.Close(); delete[] pBuffer; }
// // HFILE 을 이용한 읽기 쓰기 시험 // { HFILE hFile = _lopen( "3.dat",OF_READ );
int size = _llseek( hFile, 0, FILE_END ); _llseek( hFile, 0, FILE_BEGIN );
BYTE* pBuffer = new BYTE[ size ];
DWORD start = GetTickCount(); _lread( hFile, pBuffer, size );
CString str; str.Format( "HFILE %d ms", GetTickCount() - start ); AfxMessageBox( str );
_lclose( hFile ); delete[] pBuffer; } }
return 0; } |
결론 |
- 3가지 방식 모두 동일한 속도를 나타냅니다.
- 따라서 CFile 의 읽기(Read) 속도가 느리다는 글은 거짓으로 사료됩니다.
- 최초 로딩은 디스크에서 읽기 때문에 긴 시간이 소요됩니다.
- 이후 로딩은 윈도우 캐시 시스템에 의하여 메모리에 적재된 파일을 읽으므로 짧은 시간이 소요됩니다.
주의사항 |
- 본 실험은 약점을 지닌 실험방식임을 인정합니다.
- 하지만 결과는 일반적이고 올바르다고 판단하고 있습니다.
- 의심 있는 분들은 직접 추가 테스트 해보시기 바랍니다.