1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #!/usr/bin/env python3
# coding: utf-8
import random
import timeit
from functools import partial
import re
# Initialisation random
random.seed()
# Les fonctions à tester
def direct(s, data):
return tuple(re.search(s, d) for d in data)
def compiz(s, data):
s=re.compile(s)
return tuple(re.search(s, d) for d in data)
fct={
"direct" : direct,
"compile" : compiz,
}
# Les données à traiter
data=["30/12/2022",] * 2000
find="[0-9]{4}"
# Vérification fonctions identiques
assert len(set(repr(f(find, data)) for f in fct.values())) == 1
# Le nombre de répétitions (les moyennes se feront sur cette valeur)
repeat=20
# Appel des fonctions dans un ordre aléatoire et affichage du chrono
print("start=%d, repeat=%d" % (len(data), repeat))
for (k, v) in random.sample(tuple(fct.items()), len(fct)):
t=timeit.Timer(partial(v, find, data)).repeat(repeat=repeat, number=100)
print("%s: min=%f, max=%f, avg=%f" % (k, min(t), max(t), sum(t)/len(t)))
# for |
Partager