[Python] Numpy.array e tempi di accesso

Manlio Perillo manlio.perillo a gmail.com
Mar 3 Nov 2015 18:19:54 CET


2015-11-03 17:19 GMT+01:00 Pietro Battiston <ml a pietrobattiston.it>:
> Salve a tutti di nuovo,
>
> se definisco un semplice Fibonacci con una cache (volutamente un po'
> stupida):
>

> [...]
> E va bene che il
> dizionario Python  una struttura efficiente, ma...  sempre una hash
> table pi un indexing, come fa a battere un semplice indexing?
> [...]
> ... ma resta il fatto (verificato con %lprun) che "cached = cache[n]"  pi veloce quando cache  un dizionario (~0.3 s) che quando  un array (~0.4 s).
>
> Ci umilia quel briciolo di comprensione delle strutture di dati che credevo di avere. Qualcuno sa illuminarmi?
>

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.

Fai un paio di altri test, usando:
1) array (della libreria standard, anche se Python 3.x per avere
intery a 64 bits)
2) Cython usando un array C

[1] Proprio l'altro giorno mi  successa una cosa del genere in un
progetto in Go, dove la creazione di una goroutine falsava
completamente il test, facendo apparire l'implementazione pi lenta
come pi veloce. Tolto il codice addizionale ho ottenuto i risultati
corretti.


Ciao  Manlio


Maggiori informazioni sulla lista Python