17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

432<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Quand optimiser ?<br />

Profiling<br />

Il est déconseillé de tenter d’optimiser son code au moment de sa première écriture,<br />

car cette approche a pour conséquence de complexifier l’objectif premier : concevoir<br />

un code qui fonctionne.<br />

De plus, il est quasiment impossible d’identifier à l’avance, sauf pour les cas isolés ou<br />

bien précis, les enchaînements de code qui provoqueront de réelles lenteurs potentiellement<br />

éradicables. Calculer la complexité d’un algorithme est une chose, prévoir<br />

toutes les combinaisons d’enchaînements et d’imbrications possibles d’un applicatif<br />

en est une autre.<br />

L’optimisation ne s’opère donc que lorsque l’on constate que l’une des fonctionnalités<br />

de l’applicatif n’est pas conforme aux attentes en termes de rapidité d’exécution,<br />

même s’il est possible comme nous le verrons en fin de chapitre de procéder à des<br />

tests de performance continus.<br />

Cette optimisation se base sur une recherche du goulot d’étranglement, ou bottleneck,<br />

et dans le meilleur des cas à son éradication par une modification d’une partie du<br />

code. Parfois, tout ou partie de l’architecture du programme est remise en cause et<br />

une refonte plus profonde peut être nécessaire. On parle alors de refactoring.<br />

La recherche du goulot d’étranglement se fait par le biais du profiling, qui consiste à<br />

mesurer les performances d’une fonctionnalité en chronométrant la durée d’exécution<br />

de chacun des acteurs. Cet exercice permet en outre de déceler d’autres types<br />

d’anomalies.<br />

Une fois le coupable identifié, une décision doit être prise pour améliorer les performances.<br />

Enfin, des tests de performance continus peuvent être mis en place, pour garantir, de<br />

la même manière que pour les tests unitaires, qu’il n’y a pas de régression au niveau<br />

de la rapidité de l’applicatif : chaque introduction ou modification de code pouvant<br />

potentiellement créer un nouveau goulot d’étranglement.<br />

Cette dernière démarche a en outre l’avantage de rendre le développeur de plus en<br />

plus proactif sur les problèmes de performances, il les décèle dès leur introduction.<br />

Le profiling permet de repérer rapidement les portions de code les plus lentes pour<br />

les modifier. D’autres anomalies peuvent être décelées par les profilers, à savoir :

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!