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.

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

seconde sur les deux plates-formes. (time.time() atteint 1/60e de seconde sous<br />

MS-Windows).<br />

De plus, les temps renvoyés dans ce cas ne sont pas les temps de consommation CPU<br />

mais les temps relatifs. Cela signifie que certaines variations peuvent être observées<br />

lorsque d’autres processus sont actifs sur la machine de tests.<br />

Pour obtenir un temps le plus proche de la réalité, il est judicieux d’exécuter trois fois<br />

de suite la mesure par repeat() et récupérer le meilleur temps des trois.<br />

timeit([number=1000000])<br />

Exécute l’expression setup puis l’expression stmt fournies à la construction de l’instance.<br />

Si number est fourni, il détermine le nombre d’exécutions de stmt. Comme<br />

timeit est orienté code patterns, c’est-à-dire qu’il est en général employé pour optimiser<br />

de très courtes séquences de code, number est à défaut à un million.<br />

La méthode renvoie le temps d’exécution.<br />

repeat([repeat=3 [, number=1000000]])<br />

Méthode complémentaire, qui permet d’appeler timeit()repeat fois, en lui passant<br />

si fourni, le paramètre number.<br />

Dans l’exemple ci-dessous, timeit est utilisée pour comparer deux algorithmes qui<br />

ont le même objectif.<br />

Comparaison<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*def<br />

algo1():<br />

chaine = ''<br />

for i in range(100000):<br />

chaine += '*'<br />

return chaine<br />

def algo2():<br />

chaine = []<br />

for i in range(100000):<br />

chaine.append('*')<br />

return ''.join(chaine)<br />

if __name__=='__main__':<br />

from timeit import Timer<br />

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

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

439

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

Saved successfully!

Ooh no, something went wrong!