>> const double by = (double)(j_shoot - j) * cellsize; // by = dy (m) going from (i_shoot,j_shoot) to (i,j)
Tu peux le remonter hors de la boucle.
>> const double dist2 = ( (bx * bx) + (by * by) + (bz * bz) );
tu peux alors précalculer hors de la boucle aussi (by*by)
>> const int ij = j * dimx + i;
>> const int ab = j_shoot * dimx + i_shoot;
Tu peux précalculer aussi j*dimx hors de la boucle même si tu l'utilises pas (à tester en fonction du nombre de fois ou le test est vrai).
Aussi, ton ab est connu hors des 2 boucles.
>> log/pow
Bon, ça, ça coute cher. Faut voire tes données si t'as pas des invariants mathématiques.
C'est de l'optimisation locale un peu naive, mais ça devrait le faire un minimum.
[^] # Re: Est-ce le cache CPU ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse au message étudier le fonctionnement du cache. Évalué à 3.
Tu peux le remonter hors de la boucle.
>> const double dist2 = ( (bx * bx) + (by * by) + (bz * bz) );
tu peux alors précalculer hors de la boucle aussi (by*by)
>> const int ij = j * dimx + i;
>> const int ab = j_shoot * dimx + i_shoot;
Tu peux précalculer aussi j*dimx hors de la boucle même si tu l'utilises pas (à tester en fonction du nombre de fois ou le test est vrai).
Aussi, ton ab est connu hors des 2 boucles.
>> log/pow
Bon, ça, ça coute cher. Faut voire tes données si t'as pas des invariants mathématiques.
C'est de l'optimisation locale un peu naive, mais ça devrait le faire un minimum.