( apal | 2023. 08. 12., szo – 10:16 )

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.