[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