读速测试

测试结果:

1

Path: /Program/ReadSpeed/data.txt

Size: 2097152(Byte)

API:              61

MFC:             182

C Language: 845

2

Path: /ResidentFlash/ReadSpeed/data.txt

Size: 2097152(Byte)

API:              312

MFC:             2341

C Language: 1388

 

 

//API

DWORD SamsungAPI_ReadTest(CString szFileName)
{
 //Test data
 const DWORD READ_BUF_SIZE = 4096*4;
 unsigned char *sReadBuf;
 sReadBuf = new unsigned char[(int)READ_BUF_SIZE];
 memset(sReadBuf, 0x00, (int)READ_BUF_SIZE);


 //----------------    read   --------------------------------
 HANDLE hFile;
 WIN32_FIND_DATA wfd;
 DWORD dwReadTicks = 0; 
 hFile = CreateFile(szFileName,GENERIC_READ,0,NULL,
  OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING,NULL);
 if (hFile == INVALID_HANDLE_VALUE)
 {
  return dwReadTicks;
 }
 FindFirstFile(szFileName,&wfd);//大于4G的文件才用到高位
 DWORD nSize = wfd.nFileSizeLow;
 DWORD dwRead    = 0;
 long CountTick = 0;
 while(nSize>0)
 {
  CountTick = GetTickCount();  // Start!
  ReadFile(hFile, sReadBuf, (int)READ_BUF_SIZE, &dwRead, NULL); // To move the file pointer is not needed for performance.   
  dwReadTicks += GetTickCount() - CountTick; // End!
  nSize -= dwRead;
 };
 CloseHandle(hFile); 
 delete []sReadBuf; 
 return dwReadTicks;
}

 

 

// MFC

long MFC_ReadTest(CString szPath)
{
 long lStartTime    = 0, lReadTimeTotal    = 0;
 const int READ_TIMES = 1;
 for (int m = 0; m < READ_TIMES; m++) //多读几次
 {
  long lTotalLen = 0;

  //读出数据
  CFile file;
  file.Open(szPath, CFile::modeRead);
  if (!file)
  {
   AfxMessageBox(_T("读取文件失败!"));
   return lReadTimeTotal;
  }
  const int READ_BUF_SIZE = 4096*4;
  char sReadBuf[READ_BUF_SIZE];

  //读时测试
  lStartTime = GetTickCount();
  int iReadLen = file.Read(sReadBuf, READ_BUF_SIZE);
  lReadTimeTotal += GetTickCount() - lStartTime;

  while (iReadLen > 0)
  {
   lTotalLen += iReadLen;
   //看是否还有剩余数据
   lStartTime = GetTickCount();
   iReadLen = file.Read(sReadBuf, READ_BUF_SIZE);
   lReadTimeTotal += GetTickCount() - lStartTime;
  }

  file.Close();
 }
 return lReadTimeTotal;
}

 

 

//C

DWORD CLanguage_ReadTest(char szPath[MAX_PATH])
{
 FILE *f = fopen(szPath,"r");
 DWORD dwReadTicks = 0;
 if(f)
 {
  const DWORD READ_BUF_SIZE = 4096*4;
  char *sReadBuf = new char[(int)READ_BUF_SIZE];
  memset(sReadBuf, 0, (int)READ_BUF_SIZE);
  long CountTick = 0;
  CountTick = GetTickCount();
  while( fgets(sReadBuf,READ_BUF_SIZE,f))//按行读取
  {
   dwReadTicks += GetTickCount() - CountTick;
   CountTick = GetTickCount();
  }
  delete []sReadBuf; 
  fclose(f);
 }
 return dwReadTicks;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值