Ik ben bezig met het schrijven van een programma waarin de volgende functie nogal veel (lees 60%) van de tijd in beslag neemt:
Oftewel, ik heb 2 arrays met doubles die ik van elkaar af wil trekken en dan per waarde kwadrateer en dan return ik de som van al deze kwadraten (ik bereken maw de 'euclidean' distance tussen 2 vectoren)
Nou heb ik wel al een aantal optimalisaties geimplementeerd, maar die zorgen alleen dat deze functie minder wordt aangeroepen. Het daadwerkelijk optimaliseren van deze functie zou echt heel veel tijd schelen. Is er misschien iemand die mij hiermee kan helpen?
Ik heb zelf al gekeken naar het 'unrollen' van de for loop en dat soort dingen, maar met de juiste compiler optimalisatie instellingen gebeurt dat al vanzelf
Bvd!
code:
1
2
3
4
5
6
7
| double dist = 0.0, dist_tmp;
for(int i = 0; i < dim; i++)
{
dist_tmp = (mapvector[i] - datavector[i]);
dist += dist_tmp * dist_tmp;
}
return dist; |
Oftewel, ik heb 2 arrays met doubles die ik van elkaar af wil trekken en dan per waarde kwadrateer en dan return ik de som van al deze kwadraten (ik bereken maw de 'euclidean' distance tussen 2 vectoren)
Nou heb ik wel al een aantal optimalisaties geimplementeerd, maar die zorgen alleen dat deze functie minder wordt aangeroepen. Het daadwerkelijk optimaliseren van deze functie zou echt heel veel tijd schelen. Is er misschien iemand die mij hiermee kan helpen?
Ik heb zelf al gekeken naar het 'unrollen' van de for loop en dat soort dingen, maar met de juiste compiler optimalisatie instellingen gebeurt dat al vanzelf
Bvd!