OVH Cloud OVH Cloud

map+lambda VS for...in

11 réponses
Avatar
SL
Bonjour,

suite au post de Christophe du 10/03 18:58,
je me suis amuse a comparer les perf de map+lambda et for...in
avec le script suivant :

"""
import time

start, end =0 , 0
start = time.time()
[a for a in range(10**6)]
end = time.time()
print "for .. in\t" , end - start

start, end = 0 , 0
start = time.time()
map(lambda a : a, range(10**6))
end = time.time()
print "map + lambda\t" , end - start
"""

qui me donne ce genre de resultat :
for .. in 0.858999967575
map + lambda 0.594000101089

comme quoi map+lambda est sensiblement plus rapide pour parcourir et
traiter une liste.

super... mais comment cela se fait il ???
j'aurais plutot misé sur for...in, vu qu'il n'y a pas d'appel de
fonction a chaque iteration... :-?

merci d'avance pour vos explications,

1 réponse

1 2
Avatar
Encolpe DEGOUTE
Dans fr.comp.lang.python, Hervé Cauwelier écrivit:
Yermat wrote:
Je ne sais pas comment cela fonctionne en interne mais les résultats
sont à relativiser avec les optimisations récentes :

python23 testPerf.py
for .. in 1.22099995613

map + lambda 1.03200006485
for .. in xrange 1.07100009918
map + lambda xrange 0.911999940872

python2.4 testPerf.py
for .. in 0.641000032425

map + lambda 1.03200006485
for .. in xrange 0.520999908447
map + lambda xrange 0.921000003815


Il me semble même que Guido n'aime pas (plus ?) les fonction heu...
fonctionneles, commme map. On comprend donc qu'ils bossent à mort sur
les optimisations de boucle pour s'en passer. :-)


Zut !
Et moi qui voulait réécrire du code LISP en Python.
Quel dommage.

--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales



1 2