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.

440<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

t = Timer('algo2()', 'from __main__ import algo2')<br />

print 'exécution algo 2: %f' % t.timeit(10)<br />

Elle permet de constater les différences entre les deux options, et aussi pour ce cas<br />

précis, l’évolution interne de la gestion des chaînes entre Python 2.3 et 2.4.<br />

Exemple d’optimisations entre Pyhton 2.3 et Python 2.4<br />

$ python2.3 timing.py<br />

exécution algo 1: 14.064436<br />

exécution algo 2: 0.703696<br />

$ python2.4 timing.py<br />

exécution algo 1: 0.314968<br />

exécution algo 2: 0.482306<br />

Amélioration des performances<br />

Une fois le problème repéré par le profiler, plusieurs techniques existent pour réduire<br />

le temps d’exécution.<br />

La plupart du temps une légère modification du code suffit à régler le problème. Si la<br />

solution à appliquer n’est pas flagrante, il peut être nécessaire de rechercher un code<br />

de remplacement dans la liste des code patterns fournis ci-dessous.<br />

Ces code patterns, ou portions de codes, sont des techniques éprouvées pour effectuer<br />

un travail précis, le plus rapidement possible.<br />

Python est un langage basé sur le langage C : chaque séquence de code résulte en une<br />

série d’appels à des primitives de bas niveau codées en C.<br />

Certaines fonctions sont des liens directs vers des primitives C et d’autres doivent<br />

traverser des couches plus épaisses d’appels de code Python.<br />

Favoriser l’usage de fonctions proches du C augmente donc de manière très importante<br />

les performances.<br />

Si ces modifications ne permettent pas de résoudre le problème, d’autres voies sont<br />

possibles :<br />

Le caching, qui consiste à conserver en mémoire les résultats d’un calcul coûteux,<br />

pour pouvoir les resservir en cas de besoin.<br />

Le multithreading, qui permet d’exécuter du code en tâche de fond.<br />

La programmation en C d’une extension du langage.<br />

L’utilisation de bibliothèques de calcul spécialisées.<br />

L’utilisation d’outils de programmation comme Cython.

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

Saved successfully!

Ooh no, something went wrong!