Un changement d'algorithme par contre permet des gains énorme de performances ! On passant d'une liste simplement chaînée à une liste doublement chaînée je passe d'un calcul de 3.5 secondes à 20 millisecondes !!! Simplement car effacer un élément dans une liste chaînée demande à connaître l'élément précédent, il faut donc parcourir la liste ... quand tu as 1 million d'élément, ça prend le temps qu'il faut :-)
Oui le meilleur moyen de faire du code rapide
c'est de faire une analyse du probleme et d'en déduire
la structure de donnée la moins mauvaise à utiliser.
Donc conseil au programmeur débutant: n'apprend pas de quel coté du if il faut mettre le bloc le plus probable, cela te donnera une fausse idée que tu maitrises la machine. Par contre prend des cours d'algorithmique de base ou lis un bouquin (style introduction a l'algorithmique de Thomas Cormen).
On m'a d'ailleurs dit qu'il fallait plutôt utiliser "const int cst_x = 4;" que "#define cst_x (4)". Je doute. Mon problème est surtout de placer des "const type var=valeur;" dans un fichier .H ... "Impossible de précompiler l'entête car il contient du code" :-( Et si je mets un "extern" devant, et que je le déclare avec sa valeur dans le .CPP ... Ca marche pas, il me dit que la variable n'est pas définit ou je ne sais pas quoi :-/
Entre les const et les define c'est un peu la guerre.
Par contre ce qui est sur c'est qu'on peut toujours remplacer
une suite de define par un type enum. C'est une maniere de typer plus fortement un entier, et en plus une
variable de type enum apparaitra sous son nom propre dans
le debogueur, ce qui peut etre un gain de temps.
Pour ce qui est de la définition des constantes globales:
extern const type mavar; // dans le .h
et
const type mavar = .. ; // dans le cpp
normalement ca marche.
Quel est ton code et quel est ton message d'erreur? (a la compilation ou lors de l'édition de liens?)
LeGreg
Partager