Il giorno 11/dic/2013, alle ore 16:45, Marco Beri <marcob...@gmail.com> ha scritto:
> On Wed, Dec 11, 2013 at 4:31 PM, Piergiuliano Bossi <pgbo...@gmail.com> wrote: > Mi piace molto. Ho solo una domanda: perche' serve __getattr__ e perche' > ribalta la chiamata su __getattribute__ del generatore? > > > avg1 2.72754812241 > avg2 2.58321499825 > avg3 6.11401891708 > avg4 2.8605260849 > avg5 4.49426484108 tra l'altro ho aggiunto un altro metodo e ho ottenuto questi tempi : avg1 3.25835704803 avg2 3.29155302048 avg3 5.01489901543 avg4 2.00609302521 avg5 4.07783102989 avg6 1.37758612633 Cosa dice avg6 ? Ecchilo : def avg6(): x=list(gen(100000)) return sum(x)/len(x) Cioè il modo più sprecone per la memoria è in assoluto molto più veloce. E perchè la avg4 è così veloce ? Ecco la risposta dalla documentazione di 'tee': This itertool may require significant auxiliary storage (depending on how much temporary data needs to be stored). In general, if one iterator uses most or all of the data before another iterator starts, it is faster to use list() instead of tee(). Insomma la velocità si paga ;) G _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python