Optimisation Vitesse d'Exécution Calcul matriciel
Bonjour à toutes et à toutes.
Pour un algorithme de traitement d'informations, je dois appliquer sur un tableau 600x600 un filtre de corrélation 21x21
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
int demiTaille = 10;
for(int n=0; n< 600; ++n)
for(int m=0; m<600; ++m)
{
int uBegin = std::max(0, n - demiTaille );
int uEnd = std::min(600- 1, n + demiTaille );
int vBegin = std::max(0, m - demiTaille );
int vEnd = std::min(600- 1, m + demiTaille );
double temp = 0.0;
for(int u=uBegin; u<=uEnd; ++u)
for(int v=vBegin; v<=vEnd; ++v)
temp += abs(tabInitial[u][v]) * filter[demiTaille + u - n][demiTaille + v - m];
tabFinal[n][m] = temp;
} |
Le problème est que l'exécution de cette partie dure 0.4 secondes, ce qui est trop long pour mon application.
Est ce que quelqu'un aurait des solutions d'optimisation.
Merci d'avance :)