A bien inliner les fonctions qui valent le coup
Il est important d'inliner les petites fonctions pour les mettres dans les grandes (surtout que gcc s'en sort tres mal tout seul).
Ne pas oublier qu'une fonction pour etre inliner doit etre "vue" par le code qui l'utilise, donc elle doit etre incluse dans un fichier .hh par exemple.
A passer par référence les paramètres qui sont des structures, même si tu n'as pas l'utilité d'un passage par référence
Par reference ou via un pointeur. Le passage par reference t'informant que le pointeur qu'on te passe ne doit pas etre detruit (par convention).
Je rajouterais mettre le mot clef const le plus souvent possible, ca permet de plus facilement detecter les alias memoires dans certain cas et facilite un peu la vie au compilo.
Enfin de maniere general utilise des containers de la STL plutot que tes propres types, car ceci sont tres efficaces. Si jamais tu manipules des listes verifient que tu as vraiment besoin de pouvoir ajouter en tete (push_front), si ce n'est pas le cas prefere l'utilisation du container vector plutot que list (Il gere les donnees sous forme de tableau linaire en memoire, ce qui ameliore les perfs au final).
De plus si tu connais la taille a l'avance de tes tableaus profites-en pour le specifier des le depart, ca fait un gain de temps en limitant les malloc.
Enfin de maniere generale evitent la construction/destruction d'objet dans tes boucles critiques (ainsi que des appels systemes).
[^] # Re: Optimiser un programme C++
Posté par cedric . En réponse au journal Optimiser un programme C++. Évalué à 1.
Il est important d'inliner les petites fonctions pour les mettres dans les grandes (surtout que gcc s'en sort tres mal tout seul).
Ne pas oublier qu'une fonction pour etre inliner doit etre "vue" par le code qui l'utilise, donc elle doit etre incluse dans un fichier .hh par exemple.
A passer par référence les paramètres qui sont des structures, même si tu n'as pas l'utilité d'un passage par référence
Par reference ou via un pointeur. Le passage par reference t'informant que le pointeur qu'on te passe ne doit pas etre detruit (par convention).
Je rajouterais mettre le mot clef const le plus souvent possible, ca permet de plus facilement detecter les alias memoires dans certain cas et facilite un peu la vie au compilo.
Enfin de maniere general utilise des containers de la STL plutot que tes propres types, car ceci sont tres efficaces. Si jamais tu manipules des listes verifient que tu as vraiment besoin de pouvoir ajouter en tete (push_front), si ce n'est pas le cas prefere l'utilisation du container vector plutot que list (Il gere les donnees sous forme de tableau linaire en memoire, ce qui ameliore les perfs au final).
De plus si tu connais la taille a l'avance de tes tableaus profites-en pour le specifier des le depart, ca fait un gain de temps en limitant les malloc.
Enfin de maniere generale evitent la construction/destruction d'objet dans tes boucles critiques (ainsi que des appels systemes).