**Ceci est une ancienne révision du document !** ----
======Benchmark====== Bien que ne semblant avoir indépendemment que peu d'effets, l'application de l'ensemble de ces astuces dans un programme peut avoir un effet drastique sur son temps d'exécution. ====Appel de fonction==== Appel dans une boucle : <Code python> def doit(): something() rng = range(x) for i in rng: doit() </Code> Boucle dans la fonction : <Code python> def doit(x): rng = range(x) for i in rng: something() doit(x) </Code> ===Bench=== 1.000.000 de tours : - Appel dans une boucle : 1.341 - Boucle dans la fonction : 1.164 <barchart>0|50x20|100|Dans:100,Hors:70</barchart> ===Conclusion=== L'appel à une fonction prends du temps, il est donc bien plus rapide de mettre la boucle à l'intérieur de la fonction. =====Opérateurs===== ====Division et multiplication==== Division : <Code python> rng = range(x) for i in rng: 123456.789 / 4 </Code> Multiplication : <Code python> rng = range(x) for i in rng: 123456.789 * 0.25 </Code> Le résultat de ces calculs est le même. ===Bench=== Calcul effectué 1.000.000 de fois : - Division : 0.121 - Multiplication : 0.047 <barchart>0|50x20|12.1|Division:12.1,Multiplication:4.7</barchart> ===Conclusion=== La multiplication est de deux à quatre fois plus rapide que la division. ====Incrémentation et addition==== Addition : <Code python> rng = range(x) for i in rng: i = i + 1 </Code> Incrémentation : <Code python> rng = range(x) for i in rng: i += 1 </Code> ===Bench=== Calcul effectué 1.000.000 de fois : - Addition : 0.140 - Incrémentation : 0.117 <barchart>0|50x20|14|Addition:14,Incrémentation:11.7</barchart> ===Conclusion=== L'incrémentation est légèrement plus rapide que l'addition. =====Classes==== ====Accès aux méthodes==== Point dans la boucle : <Code python> arr = [] rng = range(x) for i in rng: arr.append(something()) </Code> Point hors de la boucle : <Code python> arr = [] append = arr.append rng = range(x) for i in rng: append(something()) </Code> ===Bench=== Calcul effectué 1.000.000 de fois : - Point dans la boucle : 1.307 - Point hors de la boucle : 1.157 <barchart>0|50x20|1.3|Dans:1.3,Hors:1.1</barchart> ===Conclusion=== La référence à une méthode de classe (syntaxe du point), au lieu d'être recalculée à chaque tour de boucle, peut être une fois pour toutes stockée dans une variable, accélérant notablement les calculs. =====WIP===== En cours d'écriture. A venir : benchmark code, parcourt et tri de tableaux/listes et dictionnaires, concaténation et vitesse des opérateurs mathématiques et de comparaison.