Comment accelerer une fonction?
Bonjour
dans mon programme j'utilise initialement une map de type<Material*,Cell> et j'ai une fonction num suivante:
Code:
1 2 3 4 5 6 7 8
| int num(Material *matl) {
map<Material *,Cells>::iterator p = mat_.find(matl);
if (p != mat_.end()) {
return (p->second).num;
} else {
return (int)0;
}
} |
En analysant avec callgrind les fonctions qui prennent le plus de temps je me rend compte que c celle-ci qui est appeler bcp de fois et qui prend bcp de temps.
Etant donner que la taille de la map ne depasse pas 5. Je me dis que construire l'iterateur est ce qui prend du temps.
Du coup je pense a une alternative qui est de stoker directement les valeurs num dans un vecteur de taille 5 et d'y acceder directement genre:
Code:
1 2 3 4 5 6 7 8 9
| int num2(Material *matl) {
int ind=matl->id();
if (ind < nbmat_) {
return mat2_[ind];
} else {
cout <<"Attention ca a depasser la taille de mat2_"<<endl;
return 0;
}
} |
cette modification entraine bcp de changements lourds.
C'est pourquoi avant je voudrais savoir si vouss pensez qu'une telle modification peut reellement etre benefique pour accelerer le programme.
Merci
Cordialement
jeanne