代码:
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 循环数组,多做几遍会优化;