2015-11-03 18:23 GMT+01:00 Manlio Perillo <manlio.peri...@gmail.com>: > 2015-11-03 18:19 GMT+01:00 Manlio Perillo <manlio.peri...@gmail.com>: > [...] >> Tieni conto che con Python è ben possibile che ci siano altri fattori >> che "mascherano" le performance reali [1]. >> Magari l'indexing di un array numpy non accede direttamente alla >> memoria come accade in C. >> > > Ed infatti: > http://stackoverflow.com/questions/22239199/numpy-array-indexing-and-or-addition-seems-slow > > A differenza di Go, però, qui non puoi farci niente! >
Prova con questa funzione: def afib(n): cache = -ones(shape=n+1, dtype=object) cache[0] = cache[1] = 1 return _fib(n, cache) Il risultato può sorprendere, ma quando usi int64, numpy ad ogni lettura di un elemento dell'array deve costruire un nuovo oggetto python (Python non supporta i tipi così detti unboxed). Però numpy ha ancora del codice addizionale in mezzo, perchè questa versione def afib(n): cache = [-1 for i in range(n+1)] cache[0] = cache[1] = 1 return _fib(n, cache) è più efficiente. Dovrei leggere il codice, ma non ne ho voglia. Ciao Manlio _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python