Mivel zártad ki, hogy a pszeudorandom generálást mérted meg és nem a random memória elérés sebességét?
Kicsit finomhangoltam az eljarason:
uint32_t test_access_generic(uint32_t *array,unsigned acount,uint32_t mask_array,uint32_t mask_rnd)
{
uint32_t x;
unsigned i,index;
x=0;
index=1;
for ( i=0; i<acount; i++ )
{ x+=array[(i+(index&mask_rnd))&mask_array];
index=lfsr_32(index);
}
return(x);
}
A mask_array az alapertelmezetten acount-1, ahol acount=1<<24 (vagy valami nagyobb szam, lenyeg hogy ketto-hatvany). A mask_rnd-vel tudsz jatszani. Ha az (1<<0)-1, akkor visszakapod a szekvencialis olvasast, ha az (1<<24)-1, akkor a teljesen pszeduorandom olvasasast. Ha noveled a maszk szelesseget ugy egyere inkabb randomizalja az elerest. Es ezaltal no a futasido, illetve kevesbe melegszik a processzor. Ellenben a szukseges szamitasi teljesitmeny nem valtozik, nem fugg a maszk szelessegetol.