Je m'attendais array.array
à être plus rapide que les listes, car les tableaux semblent être déballés.
Cependant, j'obtiens le résultat suivant:
In [1]: import array
In [2]: L = list(range(100000000))
In [3]: A = array.array('l', range(100000000))
In [4]: %timeit sum(L)
1 loop, best of 3: 667 ms per loop
In [5]: %timeit sum(A)
1 loop, best of 3: 1.41 s per loop
In [6]: %timeit sum(L)
1 loop, best of 3: 627 ms per loop
In [7]: %timeit sum(A)
1 loop, best of 3: 1.39 s per loop
Quelle pourrait être la cause d'une telle différence?
array
package. Si vous voulez faire des quantités significatives de mathématiques, Numpy fonctionne à la vitesse de la lumière (c'est-à-dire C), et généralement mieux que les implémentations naïves de choses comme sum()
).
array
conversion d'une chaîne d'entiers (représentant des octets ASCII) en un str
objet est assez rapide . Guido lui-même n'a proposé cela qu'après de nombreuses autres solutions et a été assez surpris de la performance. Quoi qu'il en soit, c'est le seul endroit où je me souviens de l'avoir vu être utile. numpy
est bien meilleur pour traiter les tableaux, mais c'est une dépendance tierce.