|
안녕하세요.
제가 파일 생성해서 Read하는 속도를 측정하는
오픈소스 하나를 구해서 빌더에 적용시키는 중인데요.
static HANDLE hFile;
static volatile bool WaitFlag;
static int BufSize = 1024 * 1024;
static int Loop = 100 * 1024 * 1024;
static char* buf = NULL;
void TMain::Sequential()
{
int count;
double score, maxScore;
int i, j;
DWORD readSize, writeSize;
bool result;
double StartTime, Time; <--- 제가 추가한 부분
//////////////////////////////////////////////
// Read Test
//////////////////////////////////////////////
score = 0.0;
maxScore = 0.0;
for(j = 0; j <= 5; j++)
{
hFile = CreateFile(
"C:\\TestCreate.bin", <--- 제가 추가한 부분
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS, <--- 오픈소스에서는 "OPEN_EXISTING" 였는데 생성이 안되서 바꿈
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING|FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
count = 0;
WaitFlag = TRUE;
StartTime = GetCurrentTime(); <--- 제가 추가한 부분
for(i = 0; i < 100; i++)
{
result = ReadFile(hFile, buf, BufSize, &readSize, NULL);
if(result)
{
count++;
}
else
{
CloseHandle(hFile);
return ;
}
}
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
CloseHandle(hFile);
Time = GetCurrentTime(); <--- 제가 추가한 부분
if(j != 0)
{
score = count * (BufSize / 1000.0) / (Time - StartTime);
if(score > maxScore)
{
maxScore = score;
}
Memo1->Lines->Strings[0] = (String)score; <--- 제가 추가한 부분
}
}
}
void __fastcall TMain::Button1Click(TObject *Sender)
{
Main->Sequential();
}
이렇게 해놓고 실행을 시키면 ReadFile에서 리턴값이 false로 나와서 걍 끝나버려요ㅜ
어디가 잘못 됬나요?
|