Fonctions de calcul et optimisation : namespace ou classe ?
Bonjour.
Dans le cadre de ma thèse je vais bientôt débuter l'implémentation d'un gros programme de calcul (c'est pour de la physique fondamentale et c'est destiné à fonctionner sur supercalculateur et/ou sur BOINC).
Le tout sera bien entendu massivement multithreadé, et comme cela va être pratiquement "from ground", je vais essayé d'optimiser à mort toutes les fonctions de base qui vont être appelées des millions (milliards ?!?) de fois pendant l'exécution du programme...
Tout ça pour en arriver à une question très simple : soit par exemple une fonction mathématique "mathfunc(double x)" qui sera appelée des millions de fois par des centaines de threads : faut-il mieux une implémentation de ce type :
Code:
1 2 3
| namespace Math {
double mathfunc(double x);
} |
ou de ce type
Code:
1 2 3 4
| class Math {
public :
static double mathfunc(double x);
}; |
1) Quelles sont les différences ?
2) Y-a-t-il une implémentation préférable à l'autre ?
3) L'implémentation par namespace est-elle plus rapide à l'exécution que l'implémentation par classe (il faut avoir conscience que la fonction sera appelée des millions de fois)?
4) Un truc dont j'aimerai être certain : une fonction "static" dans une classe est commune à tout le programme ... mais cela ne pose-t-il pas problème lorsqu'elle est appelée simultanément par 2 threads ?
5) Y-a-t-il une autre solution à laquelle je n'aurai pas pensé et qui serait préférable ?
Merci beaucoup;)