| 12
 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