Bonjour,
Je suis actuellement en stage et je travaille sur un code existant de simulation numérique. Le but est d'améliorer ce code en le rendant plus rapide. Les autres développeurs n'ont pas de grandes connaissances en programmation et surtout pas en C++.
Le programme possède plusieurs solveurs d'équations mais seulement un de ces solveurs est utilisé lors d'une simulation. Le code actuel utilise un test pour vérifier avant chaque appel du solveur, lequel doit être lancé. Le choix du solveur se faisant dans un fichier de configuration lu au démarrage du programme. Le solveur étant utilisés des millions de fois par secondes, cette solution est loin d'être optimale.
J'ai donc proposé d'utiliser des templates pour remplacer ces choix de paramètres. Lors de la compilation, l'optimiseur pourra ainsi éliminer les branches inutiles et supprimer ces tests. Au total, il y a une dizaine de paramètres qui pourraient être modifiés de la sorte.
Un de mes collégues me fait alors remarquer que je pourrais faire la même chose en utilisant des directives de pré-processeur. Ce qui est correct.
J'ai relevé les inconvénients suivants aux directives de pré-processeurs :
- Difficulté de lecture du code.
- Possibles effets de bord.
- Pas de typage des options.
Et les inconvénients suivants aux templates :
- Compilation pouvant devenir très longue.
- Présence uniquement de fichiers "header".
- Impossibilité de créer des "mini-bibliothèques" pour chaque module du projet.
Y-a-t'il quelque chose que je devrais ajouter à ces listes ?
Quel est selon vous la meilleure solution ?
Merci d'avance pour vos réponses.
Partager