📄 readwritetest.cpp
字号:
lpcFolder=&m_folder;
int j=m_folder.GetCurSel();
lpcFolder->GetLBText(lpcFolder->GetCurSel(),strfoldername);
lpcBufferSize->GetLBText(lpcBufferSize->GetCurSel(),strTemp);
nbuffersize=_wtoi(strTemp);
lpcFileSize->GetLBText(lpcFileSize->GetCurSel(),strTemp);
nfilesize=_wtoi(strTemp);
if (nfilesize==0)
nfilesize=1;
if (nbuffersize==0)
nbuffersize=32;
buffersize=nfilesize*1024;
nloop=nbuffersize*1024/nfilesize;
Totalsize=nloop*buffersize;
//GetDlgItemText(IDC_NAME,strName);
SetDlgItemText(IDC_WRITE,L"");
SetDlgItemText(IDC_READ,L"");
//msg.Format(L"Totalsize=%d Buffersize=%d",Totalsize,buffersize);
//SetStatus(msg);
buffer=(PBYTE) LocalAlloc(LPTR,buffersize);
if(NULL == buffer){
msg.Format(L"CreateWrite Failure!...");
AfxMessageBox(msg);
RETAILMSG( 1, (TEXT("NULL == buffer \r\n")));
}
strName.Format(TEXT("%s"),strfoldername);
wsprintf(strfoldername,L"\\%s\\testfile",strName);
//DeleteFile(strfoldername);
memset(buffer,0x0,buffersize);
hRead=CreateFile(strfoldername,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING,NULL);
if (hRead==INVALID_HANDLE_VALUE )
{
msg.Format(L"CreateWrite Failure!...");
// SetStatus(msg);
AfxMessageBox(msg);
goto EXIT;
}
for (i=0;i<100;i++)
{
memset(buffer,0x0,buffersize);
DWORD dwRandom = Random();
dwRandom %= Totalsize;
if( Totalsize-dwRandom<buffersize)
dwRandom-=buffersize;
QueryPerformanceCounter( &liCounterStart );
if( 0xFFFFFFFF == SetFilePointer (hRead, dwRandom, NULL, FILE_BEGIN)){
msg.Format(L"SetFilePointer Failure!...");
// SetStatus(msg);
AfxMessageBox(msg);
goto EXIT;
}
err=ReadFile(hRead,buffer,buffersize,&pBytesReturned,NULL);
QueryPerformanceCounter( &liCounterEnd );
if( 0 == err )
{
RETAILMSG( 1, (TEXT("ReadFile Failed: %x \r\n"),GetLastError()));
goto EXIT;
}
BYTE bTemp = (BYTE)*buffer;
for(int j=0;j<buffersize;j++){
if( *(buffer+j) !=(BYTE)(j+bTemp))
{
RETAILMSG( 1, (TEXT("*(buffer+j) %x \r\n"),*(buffer+j)));
RETAILMSG( 1, (TEXT("(BYTE)(j+bTemp) %x \r\n"),(BYTE)(j+bTemp)));
msg.Format(L"ReadFile not equal with write Failure!...");
// SetStatus(msg);
AfxMessageBox(msg);
goto EXIT;
}
}
if( liCounterEnd.QuadPart < liCounterStart.QuadPart){
msg.Format(L"liCounterEnd.QuadPart < liCounterStart.QuadPart!...");
// SetStatus(msg);
AfxMessageBox(msg);
goto EXIT;
}
else{
liTotalCounter = liCounterEnd.QuadPart - liCounterStart.QuadPart;
//RETAILMSG( 1, (TEXT("liTotalCounter %d \r\n"),liTotalCounter));
}
dwSpeed = 0;
dwSpeed = nfilesize*49500000;
dwSpeed /= liTotalCounter;
msg.Format(L"%d KB/S",dwSpeed);
SetDlgItemText(IDC_READ,L"");
SetDlgItemText(IDC_READ,msg);
//RETAILMSG( 1, (TEXT("Random read real time speed: %dKB/S \r\n"),dwSpeed));
TotalSpeed +=dwSpeed;
Sleep(100);
}
dwSpeed = TotalSpeed/100;
msg.Format(L"%d KB/S",dwSpeed);
SetDlgItemText(IDC_READ,L"");
SetDlgItemText(IDC_READ,msg);
// RETAILMSG( 1, (TEXT("File size:%dMB, Read buffer size:%dKB/S \r\n"),nbuffersize,nfilesize));
RETAILMSG( 1, (TEXT("Random read average speed: %dKB/S \r\n"),dwSpeed));
// msg.Format(L"%d KB/S",(Totalsize/nreadtime)*1000/1024);
// SetDlgItemText(IDC_READ,msg);
// msg.Format(L"%d KB/S",(Totalsize/nwritetime)*1000/1024);
// SetDlgItemText(IDC_WRITE,msg);
EXIT:
CloseHandle(hRead);
if(buffer){
LocalFree(buffer);
}
}
#else
void CWinCE_Bench_IIDlg::WriteReadTest()
{
UINT64 liTotalCounter1=0;
UINT64 liTotalCounter2=0;
LARGE_INTEGER liCounterStart={0,0};
LARGE_INTEGER liCounterEnd={0,0};
DWORD dwSpeed=0;
HANDLE hRead,hWrite;
DWORD t2,t1,err,pBytesReturned,nCount,i,buffersize;
CString msg,strName;
PBYTE buffer=NULL;
PBYTE buffer2=NULL;
DWORD nloop,Totalsize,nreadtime,nwritetime;
CComboBox *lpcFileSize,*lpcBufferSize,*lpcFolder;
static TCHAR strTemp[10],strfoldername[50];
CStatic *lpcWrite ;
char strfilename[50];
unsigned long nbuffersize,nfilesize;
lpcWrite=(CStatic*)GetDlgItem(IDC_WRITE);
//lpcFolder=(CComboBox*)GetDlgItem(IDC_FOLDER);
lpcBufferSize=(CComboBox*)GetDlgItem(IDC_TOTALSIZE);
lpcFileSize=(CComboBox*)GetDlgItem(IDC_FILESIZE);
lpcFolder=&m_folder;
int j=m_folder.GetCurSel();
lpcFolder->GetLBText(lpcFolder->GetCurSel(),strfoldername);
SetDlgItemText(IDC_WRITE,L"");
SetDlgItemText(IDC_READ,L"");
// buffer=(PBYTE) LocalAlloc(LPTR,32*1024);
buffer2=(PBYTE) LocalAlloc(LPTR,32*1024);/*
for(i=0; i<32*1024; i++){
*(buffer+i) = i;
}*/
memset(buffer2,0x0,32*1024);
strName.Format(TEXT("%s"),strfoldername);
wsprintf(strfoldername,L"\\%s\\testfile",strName);
// DeleteFile(strfoldername);
/*
hWrite=CreateFile(strfoldername,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if (hWrite==INVALID_HANDLE_VALUE )
{
msg.Format(L"CreateWrite Failure!...");
// SetStatus(msg);
AfxMessageBox(msg);
return;
}
QueryPerformanceCounter( &liCounterStart );
err=WriteFile(hWrite,buffer,32*1024,&pBytesReturned,NULL);
QueryPerformanceCounter( &liCounterEnd );
if( 0 == err )
{
RETAILMSG( 1, (TEXT("WriteFile Failed: %x \r\n"),GetLastError()));
return;
}
if( liCounterEnd.QuadPart < liCounterStart.QuadPart){
RETAILMSG(1, (TEXT("SDMemReadMultiple error:liCounterEnd.QuadPart < liCounterStart.QuadPart!!\n")) );
while(1);
}
else{
liTotalCounter1 = liCounterEnd.QuadPart - liCounterStart.QuadPart;
}
CloseHandle(hWrite);
*/
#ifndef _F_LIBRARY_C
hRead=CreateFile(strfoldername,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING ,NULL);
if (hRead==INVALID_HANDLE_VALUE )
{
RETAILMSG( 1, (TEXT("CreateFile Failed: %x \r\n"),GetLastError()));
msg.Format(L"CreateStore Failure!...");
//SetStatus(msg);
AfxMessageBox(msg);
goto exit;
}
QueryPerformanceCounter( &liCounterStart );
err=ReadFile(hRead,buffer2,32*1024,&pBytesReturned,NULL);
QueryPerformanceCounter( &liCounterEnd );
if( 0 == err )
{
RETAILMSG( 1, (TEXT("ReadFile Failed: %x \r\n"),GetLastError()));
goto exit;
}
#else
WideCharToMultiByte(CP_ACP,
0,
strfoldername,
_tcslen(strfoldername),
strfilename,
sizeof(strfilename),
NULL,NULL);
FILE *file=fopen(strfilename,"r+");
//if()
if(file == NULL)
{
msg.Format(L"CreateWrite Failure!...");
AfxMessageBox(msg);
goto exit;
}
QueryPerformanceCounter( &liCounterStart );
fread(buffer2,1,32*1024,file);
//RETAILMSG( 1, (TEXT("ReadFile numread: %d \r\n"),numread));
QueryPerformanceCounter( &liCounterEnd );
#endif
if( liCounterEnd.QuadPart < liCounterStart.QuadPart){
RETAILMSG(1, (TEXT("SDMemReadMultiple error:liCounterEnd.QuadPart < liCounterStart.QuadPart!!\n")) );
while(1);
}
else{
liTotalCounter2 = liCounterEnd.QuadPart - liCounterStart.QuadPart;
RETAILMSG( 1, (TEXT("liTotalCounter2 %d \r\n"),liTotalCounter2));
}
for(i=0; i<32*1024; i++)
{
if( (BYTE)i != *(buffer2+i))
{
msg.Format(L"error Failure!...");
while(1);
}else{
//RETAILMSG( 1, (TEXT("buffer2 0x%x \r\n"),*(buffer2+i)));
}
}
dwSpeed = 0;
dwSpeed = 32*49500000;
dwSpeed /= liTotalCounter2;
msg.Format(L"%d KB/S",dwSpeed);
SetDlgItemText(IDC_READ,msg);
RETAILMSG( 1, (TEXT("dwSpeed %d \r\n"),dwSpeed));
// dwSpeed = 0;
// dwSpeed = 32*49500000;
// dwSpeed /= liTotalCounter1;
// msg.Format(L"%d count",liTotalCounter2);
// SetDlgItemText(IDC_WRITE,msg);
CloseHandle(hRead);
exit:
// if(buffer)
// LocalFree(buffer);
if(buffer2)
LocalFree(buffer2);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -