[LUGOS-PROG] Loop speedup

Gregor Berginc gregor.berginc at guest.arnes.si
Wed Jul 28 19:23:25 CEST 2004


Na zalost govorim o 128 razseznem prostoru :) Gre namrec za obdelavo 
slikvonih znacilk, ki jih pridobim z nekim drugim programom.

Mislim, da lookup tukaj nikakor ne pride v postev.

lp,
Grega

Anze wrote:
> Zivjo!
> 
> Ali lahko cache-iras rezultate? Jih spravis v eno ogromno tabelo, 
> potem pa delas samo lookup? Glede na to, da delas z int-i, bi to moralo biti 
> izvedljivo. Je pa seveda odvisno od tega, kje ta stvar tece in kolikokrat se 
> iste razdalje ponavljajo... Pa glede na to, da se nisi omejil na samo 2 ali 3 
> razsezni prostor, bi znala biti tabela RES ogromna. ;) Da prihranis na 
> prostoru in casu za racunanje tabele, jo lahko skonstruiras tako, da entriji 
> kazejo na iste vrednosti - namrec razdalja '2-3-3-4' je enaka razdalji 
> '3-2-4-3'. 
> 
> LP!
> 
> Anze
> 
> 
> On Wednesday 28 July 2004 13:15, you wrote:
> 
>>Zivjo,
>>
>>Od vceraj popoldne se ze matram s pohitritvijo enga dela
>>predprocesirnega algoritma. Spodnja rutina naj bi izracunala evklidsko
>>razdaljo med dvema vektorjema:
>>
>>----------------------------
>>
>>double FeatureDistance::euclideanDistance(Feature *_f1, Feature *_f2) {
>>     int fSize = _f1->getSize();
>>     int *f1Value = _f1->getValue();
>>     int *f2Value = _f2->getValue();
>>
>>     long dist = 0;
>>     for (long i = 0, tmp = 0; i < fSize; i++) {
>>         int d = (*f1Value) - (*f2Value);
>>         dist += d * d;   /**** tole je problem *****/
>>
>>	f1Value++;
>>	f2Value++;
>>     } // for
>>
>>     return sqrt(dist);
>>} // euclideanDistance
>>
>>----------------------------
>>
>>Problem je, da je v tej izvedbi blazno pocasna. Gre namrec za to, da se
>>ta rutina poklice ogromnokrat, zato je vsaka pohitritev bistvenega
>>pomena. Se najbolj me jezi, da ce namesto dist v problematicni vrstici
>>uporabim tmp (definiran na zacetku for zanke) stvar pade skoz: namesto
>>25s porabi 2.75s.
>>
>>Zato me zanima, ce kdo izmed vas ve, kako bi spravil tmp ven (if v zanki
>>seveda ne pride v postev).
>>
>>lp,
>>Grega
>>
>>p.s. Kaj bi sedaj dal za MS compiler, ki je imel tist "feature", da je
>>spremenljivke definirane v for headerju pustil tudi kasneje :)



More information about the lugos-prog mailing list