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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| from time import clock
def f_moy(d):
jprec,idprec = 0,d['id'][0]
for j,idx in enumerate(d['id']):
if idx!=idprec:
y = idprec,sum(d['Ei'][jprec:j])/(j-jprec)
jprec,idprec = j,idx
yield y
yield d['id'][-1],sum(d['Ei'][jprec:])/(j+1-jprec)
def f_moy_2(d):
jprec,idprec = 0,d['id'][0]
for j,idx in enumerate(d['id']):
if idx!=idprec:
yield idprec,sum(d['Ei'][jprec:j])/(j-jprec)
jprec,idprec = j,idx
yield d['id'][-1],sum(d['Ei'][jprec:])/(j+1-jprec)
def f_moy_R(d):
lires = []
jprec,idprec = 0,d['id'][0]
for j,idx in enumerate(d['id']):
if idx!=idprec:
lires.append((idprec,sum(d['Ei'][jprec:j])/(j-jprec)))
jprec,idprec = j,idx
lires.append((d['id'][-1],sum(d['Ei'][jprec:])/(j+1-jprec)))
return lires
d = {'Ei': (1,3,4,4,6,70,80,2000,3000,4000,6000,1111,2222,
23,13,43,53,63,733,93,83,13,33,65,75,85) ,
'id' : ('r','r','t','t','t','r','r','b','b','b','b','x','y',
'a','a','a','a','a','a','a','a','a','a','r','r','r')}
A,B,C = [],[],[]
for mesure in xrange(5):
t0 = clock()
for i in xrange(1000):
x = [ u for u in f_moy(d) ]
dt = clock()-t0
A.append(dt)
t0 = clock()
for i in xrange(1000):
y = [ u for u in f_moy_2(d) ]
dt = clock()-t0
B.append(dt)
t0 = clock()
for i in xrange(1000):
z = f_moy_R(d)
dt = clock()-t0
C.append(dt)
print x==y==z
print min(A),'\n',min(B),'\n',min(C) |
Partager