On Thu, 2011-02-10 at 18:02 +0100, Gianluca Bargelli wrote: > from timeit import Timer > > t1 = Timer(""" reduce(lambda x, y: x*10+y, (1,2,3,4,5,6,7)) """) > t2 = Timer(""" "".join([str(i) for i in (1,2,3,4,5,6,7)]) """) > > print("Reduce: {0} | List comprehension: {1}").format(t1.timeit(), > t2.timeit()) > > l'output sulla mia macchina con timeit() è: > > "Reduce: 1.58372807503 | List comprehension: 2.46447396278" > > usando Python 2.6.6 (Linux), qualcuno sa spiegare il perché di tale > differenza? :-)
Ottengo anche io risultati simili (Python 2.7, Linux 32 bit, dual core a 1.86GHz, 2Gb RAM)... Ci vorrebbe un profiling fatto bene; a "naso" immagino che chiamare str() n volte (più una singola join) sia decisamente più costoso di fare una somma ed un prodotto n volte. Paolo
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python