<div><div>>>> from timeit import Timer</div><div>>>> t1 = Timer(""" reduce(lambda x, y: x*10+y, (3,2,6,7,1,21,2)) """)</div><div>>>> t2 = Timer(""" "".join([str(i) for i in (3,2,6,7,1,21,2)]) """)</div>

<div><div>>>> t3 = Timer(""" int(  '%s' * 7 % (3,2,6,7,1,21,2)) """)</div></div><div>>>> "Reduce: {0} | List comprehension: {1} | String% {2}".format(t1.timeit(), t2.timeit(), t3.timeit())</div>

<div>'Reduce: 1.77485489845 | List comprehension: 3.06255602837 | String% 1.46671390533'</div><div>>>> "Reduce: {0} | List comprehension: {1} | String% {2}".format(t1.timeit(), t2.timeit(), t3.timeit())</div>

<div>'Reduce: 1.77306890488 | List comprehension: 3.03216409683 | String% 1.43420696259'</div></div><div><br></div><div>Indefinitiva, la terza è la più rapida da me.</div><div>La prima è un ottimo compromesso ma ha il difetto di errare i calcoli se la tupla contiene interi>9</div>


La seconda è tragica<div><br></div><div>ciao</div><div>S<br><br><div class="gmail_quote">2011/2/10 Paolo Bernardi <span dir="ltr"><<a href="mailto:villa.lobos@tiscali.it">villa.lobos@tiscali.it</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

I numeri, in assoluto, non vogliono dire granché, lordkrandel... Troppa<br>
variabilità di hardware e software. ;-) Piuttosto, esegui il timer di<br>
tutti e tre i metodi sul tuo computer e confronta i risultati, così<br>
quantomeno hai una certa uniformità di base. :-)<br>
<font color="#888888"><br>
Paolo<br>
</font><div><div></div><div class="h5"><br>
On Thu, 2011-02-10 at 18:22 +0100, lordkrandel wrote:<br>
> On 10/02/2011 18.02, Gianluca Bargelli wrote:<br>
> > t1 = Timer(""" reduce(lambda x, y: x*10+y, (1,2,3,4,5,6,7)) """)<br>
> > t2 = Timer(""" "".join([str(i) for i in (1,2,3,4,5,6,7)]) """)<br>
> > "Reduce: 1.58372807503 | List comprehension: 2.46447396278"<br>
> > usando Python 2.6.6 (Linux), qualcuno sa spiegare il perché di tale<br>
> > differenza? :-)<br>
><br>
> Sicuramente perchè non passi per la conversione in stringa, tagliando<br>
> fuori tutti i problemi di charset etc...<br>
><br>
>  >>> Timer(""" int('%s' * 7 % tuple(range(1,8)))""").timeit()<br>
> 2.3354565150000006<br>
><br>
><br>
><br>
<br>
</div></div><br>_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
<br></blockquote></div><br></div>