Ukázka efektivity (rychlosti) přístupu do pole (array):
1) Přístup do pole bez použití ukazatelů
2) Přístup do pole s použitím ukazatelů
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#define SIZE 1000
#define REPEAT 10000000
typedef double tArray;
tArray targetArr[SIZE], srcArr[SIZE];
tArray *ukEnd, *ukSource;
void main()
{
long int p;
int i;
CTime now;
CTime after;
CTimeSpan span;
for ( int iSrc = 0; iSrc < SIZE; iSrc++)
{
srcArr[iSrc] = iSrc;
}
printf("Hit keyboard for start 1\n");
getch();
/* Array access without pointers*/
// Save begin time
now = CTime::GetCurrentTime();
for (p=0; p < REPEAT; p++)
for (i=0; i targetArr[i]+=srcArr[i];
after = CTime::GetCurrentTime();
span = after - now;
printf("Test 1 exec time %i sec\n", span.GetTotalSeconds());
printf("Hit keyboard for start 2\n");
getch();
/* Array access via pointers*/
// Save begin time
now = CTime::GetCurrentTime();
for (p=0; p< REPEAT; p++) {
ukEnd=targetArr;
ukSource=srcArr;
for (i=0; i *ukEnd++ += *ukSource++;
}
after = CTime::GetCurrentTime();
span = after - now;
printf("Test 2 exec time %i sec\n", span.GetTotalSeconds());
getch();
for ( int iSource = 0; iSource < SIZE; iSource++)
{
printf("Array: %i Value: %f\n" , iSource, targetArr[iSource]);
}
getch();
}