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 [email protected] http://lists.python.it/mailman/listinfo/python
