C++ 读取二进制文件速度测试

一个二进制文件里有n 个数据,我想要随机读取K个 数据,并存储在内存中。

void  CDataToPyramid::CompareReadingSpeed()
{


	time_t rawtime;
	struct tm*timeinfo;
	time(&rawtime);
	timeinfo=localtime(&rawtime);
	char *nowtime=asctime(timeinfo);
	TCHAR Name[100];

   MultiByteToWideChar(CP_ACP, 0, nowtime, -1, Name, 100);
	 OutputDebugString(Name);
	 //Sleep(3000);
	int pensity=5;
	float proportion=(float)pensity/10;

	char *path1="D:\\Data\\ReadSpeedTest\\10_14806_132001.dat";
    FILE *mfile=fopen(path1,"rb+");
	if(mfile!=NULL)
	{
		Head head;
		fread(&head,sizeof(Head),1,mfile);
		int count=head.count;
		int Knum=proportion*count;
         CPoints *Cdata=(CPoints*)malloc(sizeof(CPoints)*Knum);
		int* Iarray=new int[Knum];
		ChouXi(Iarray,Knum,count);
		for(int j=0;j<Knum;j++)
		{
			//*****测试一 随机读取  所需时间20 s
			/*
			int xuhao=Iarray[j];
			if(j==0)
			{

			}
			else
			{
				int offset=(Iarray[j]-Iarray[j-1])*sizeof(CPoints);
				fseek(mfile,offset,1);  //文件指针 偏移量  时间差主要消耗在这里!!!!!!!!!!!
			}
			CPoints Ipt;
			fread(&Ipt,sizeof(CPoints),1,mfile);
			memcpy((CPoints*)Cdata+j,&Ipt,sizeof(CPoints));
			*/
			//******测试二 顺序读取  所需时间6s
			CPoints Ipt;
			fread(&Ipt,sizeof(CPoints),1,mfile);
			memcpy((CPoints*)Cdata+j,&Ipt,sizeof(CPoints));

		}

		fclose(mfile);

	}
	time_t rawtime1;
	struct tm*timeinfo1;
	time(&rawtime1);
	timeinfo1=localtime(&rawtime1);
	char *nowtime1=asctime(timeinfo1);
	TCHAR Name1[100];

   MultiByteToWideChar(CP_ACP, 0, nowtime1, -1, Name1, 100);
	 OutputDebugString(Name1);
	MessageBox(NULL,_T("OVER"),_T("OVER"),NULL);
}
int  CDataToPyramid::bigrand()
{

	return RAND_MAX*rand()+rand();

}
void CDataToPyramid::ChouXi(int* cc,int K,int totalcount)
{
    // 在totalcount 数中,随机产生K个不相同的数
	int index=0;
	if(K!=totalcount)
	{
		for(int i=0;K>0&&i<totalcount;i++)
		{
			if((bigrand()%(totalcount-i))<K)
			{
				cc[index]=i;
				index++;
				K--;
			}

		}


	}
	

}

 

原文链接: https://www.cnblogs.com/marky/p/3225460.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 读取二进制文件速度测试

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/97858

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午4:28
下一篇 2023年2月10日 上午4:28

相关推荐