Hallo,
ich bin gerade dabei, ein wenig auszutesten wie ich den "Euklidischen Abstand" (ohne Wurzel) schnell errechnen kann. Die Verktoren liegen als Char und Int-Arrays vor. Ich habe zwei Funktionen:
und
Was für mich seltsam ist, dass die zweite Version trotz des castens schneller ist als die erste. Auf meine X2 2,4GhZ sieht das so aus:
Version 1: 157 ms.
Version 2: 94 ms.
Kann mir jemand sagen warum das so ist?
Besten Gruß & Dank
Legenbaer
ich bin gerade dabei, ein wenig auszutesten wie ich den "Euklidischen Abstand" (ohne Wurzel) schnell errechnen kann. Die Verktoren liegen als Char und Int-Arrays vor. Ich habe zwei Funktionen:
Code:
inline float L2NORMALI(int* vec1, int* vec2){
int dist = 0;
//L2
for(int i=0; i<128; i++){
dist += (vec1[i] - vec2[i]) * (vec1[i] - vec2[i]);
}
return dist;
}
und
Code:
inline float L2NORMAL(unsigned char* vec1, unsigned char* vec2){
int dist = 0;
//L2
for(int i=0; i<128; i++){
dist += ((int)vec1[i] - (int)vec2[i]) * ((int)vec1[i] - (int)vec2[i]);
}
return dist;
}
Was für mich seltsam ist, dass die zweite Version trotz des castens schneller ist als die erste. Auf meine X2 2,4GhZ sieht das so aus:
Version 1: 157 ms.
Version 2: 94 ms.
Kann mir jemand sagen warum das so ist?
Besten Gruß & Dank
Legenbaer