数组指针速度比较以及VC++ 对for循环的优化

本文通过C++代码实测了数组直接赋值与指针间接赋值的性能差异,并对比了使用register关键字的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:

	FILE* pf;
	fopen_s(&pf,"D:\\JuNeng\\Time-Test.txt","a+");
	const int nLen = 100000000;
	int* pArr = new int[nLen];
	int* pArr1 = new int[nLen];
	int nTimes = 10;

	DWORD dTime[10];
	dTime[0] = GetTickCount();

	for (int n=0;n < nTimes;++n)
	{
		for (int i=0;i<nLen;++i)
		{
			pArr[i] = i;
		}
	}
	dTime[1] = GetTickCount();

	int * pTmp;
	for (int n=0;n < nTimes;++n)
	{
		pTmp = pArr;
		for (int i=0;i<nLen;++i,++pTmp)
		{
			*pTmp = i;
		}
	}
	dTime[2] = GetTickCount();

	for (int n=0;n < nTimes;++n)
	{
		pTmp = pArr;
		for (register int i=0;i<nLen;++i,++pTmp)
		{
			*pTmp = i;
		}
	}
	dTime[3] = GetTickCount();


	fprintf_s(pf,"%d,%d,%d\n",dTime[1]-dTime[0],dTime[2]-dTime[1],dTime[3]-dTime[2]);
	fclose(pf);
	pf = NULL;
	delete [] pArr;
	pArr = NULL;
	delete [] pArr1;
	pArr1 = NULL;




结果:

1次循环:第一次:94,62,47 ,第二次:109,47,62
10次循环:第一次:577,515,530 ,第二次:562,530,499

结论:

1:指针要比数组遍历要快;
2:for循环中register int 没有比int快多少。
3:for 循环数组,多做几遍会优化;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值