Citation:
- ne jamais utiliser de double ni de float si on peut faire autrement,
Vous pouvez utilisez les float tant que vous voulez surtout que le besoin s'en fait sentir avec l'informatique moderne.
Par contre, vous devriez limiter les conversions float -> int -> float.
Limitez l'utilisation du fmod a ce qui est necessaire.
Sinon les multiplications, additions, soustractions de float sont assez rapides sur les processeurs > pentium. ce ne sera pas le facteur limitant si tu es oblig� de faire du code compliqu� pour compenser l'absence du float.
Citation:
- si tu as des calculs utilisant fr�quement des sinus, cosinus.. calcul les une fois et mets les dans un tableau index� ( ex au lieu de cos(12), calcul tout les cos jusqu'� 360 et mets-les dans un tableau double MonCos : cos(12) devient MonCos[12]).
Gain non garanti pour des raisons d'etranglement sur l'acces � la lookup table alors que les processeurs incluent une instruction de calcul du cosinus. A n'utiliser que pour des processeurs limit�s en virgule flottante (proc embarqu�s) et meme la ca peut etre parfois plus rapide et aussi efficace de faire le calcul par approximation.
Citation:
- essayer d'avoir le moins de division et de multiplication possible.
Beaucoup plus vrai pour les divisions que pour les multiplications qui sont assez rapides. Notez que diviser par X revient a multiplier par 1/X mais c'est un truc de base, il paraitrait meme que des compilateurs l'optimisent (quand il s'agit de constantes).
Citation:
Ne pas remplacer une division (par une puissance de 2) par un d�calage !Le compilateur sait tr�s bien le faire.
Et puis �a ne marche pas sur les nombres n�gatifs.
moi j'aime bien generer des puissances de deux par un 2^n = 1 << n;
Sinon la puissance de deux en binaire a une propriete interessante
on peut calculer son modulo par un & (2^n-1)
et on peut l'arrondir a la puissance de deux voulue par l'op�ration complementaire & ~(2^n-1).
Ca ne sert presque a rien. Enfin de toute facon ce genre d'optimisation vous le ferez apr�s la touche finale si jamais ca a une importance quelconque.
Citation:
inline est pareil...
Attention � ne pas forcer, l'augmentation de taille du code pourrait annuler le gain des appels de fonctions �vit�s.
Si vous pensez qu'une methode peut-etre inline, pensez a la mettre
dans le fichier header de votre classe, sinon le compilo ne saura pas ou trouver le corps de la fonction pour l'inliner. (certains ont un fichier header qu'ils appellent machin.inl pour sp�cifier qu'il contient les d�finitions des fonctions inlinables)
Citation:
-prendre un bon compilateur ! Lui faire confiance pour les optimisations de base.
C'est lesquels les mauvais compilateurs?
perso j'utilise MSVC++, c'est bien suffisant
pour ce que je fais.
Citation:
-avoir une structure de programme efficace.
Oui avant de chercher a gagner des cycles sur une boucle
voir si l'algo qui prend une heure ne peut pas etre ramen�
a un algo qui prend une minute par analyse du probleme.
Citation:
-pr�f�rer les entiers aux flottants.
cf ma remarque ci dessus
Citation:
-pr�f�rer le type int, c'est quasiment par d�finition le plus rapidement manipul� par le processeur.
Ca veut dire que bool ne peut pas etre manipul� rapidement par le proc?
L'important c'est tout de meme la proprete des types manipul�s par le programme, le compilateur fait sa sauce derriere pour arranger ca au mieux.
Citation:
-sp�cifier const tout ce qui peut l'�tre. Si �a bouge pas, pas besoin d'aller y voir..
Je ne crois pas que le compilateur optimisera tres souvent sur const.
Par contre un code peut-etre optimis� pour du const-specific
exemple: surcharge d'une methode const sur une string qui renvoie un char plutot qu'une reference vers un char.
Citation:
-�viter les op�rations d'�criture.
??
Citation:
-ne pas faire de choses inutiles. C'est �vident...
Ah tu veux dire, eviter de mettre des noop au milieu du code?
[snip] (je coupe)
Ca fait tout de meme beaucoup de regles dont certaines ont un interet qui est soit tres faible soit risquent d'etre mal interpret�es.
LeGreg