Dans bien des cas, les opérations mathematiques sont plus rapides que les sauts conditionnels
exemple avec ces deux fonctions.
double foo(bool a, double b) { return a*b; } double bar(bool a, double b) { if ( a == true ) return b; else return 0; }
la fonction foo est plus rapide que bar, ou en tout cas est plus facile à optimiser si on l’apelle un grand nombre de fois.
exemple pour 10 millions d’appels sur un processeur Intel(R) Core(TM)2 6300@1.86GHz
//sans optimisation FOO temps : 0.191716 sec FOO temps : 0.191693 sec BAR temps : 0.208786 sec BAR temps : 0.208999 sec ecart : 8%
//optimisation O1 FOO temps : 0.123257 sec FOO temps : 0.122524 sec BAR temps : 0.130222 sec BAR temps : 0.129852 sec ecart : 5%
//optimisation O2 FOO temps : 0.024811 sec FOO temps : 0.025352 sec BAR temps : 0.072986 sec BAR temps : 0.073545 sec ecart : 66%
Remarque importante concernant l’optimisation :
Dans un programme digne de ce nom, il est inutile d’optimiser ce qui n’en a pas besoin, surtout si ça nuit à la lisibilité du code.
Généralement, les gains de vitesse proviendront de la complexité de l’algorythme utilisé plutôt que de la qualité du codage.
Généralement 90% des gains de vitesse possibles peuvent être obtennus en optimisant moins de 10% du code.
Aussi, ne réservez ce genre d’astuces qu’a de très petites portions de code et vérifiez que vos modifications ont un impact positif et suffisant pour justifier leur emploi.
Sorry, the comment form is closed at this time.