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?
arraypackage. 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()).
arrayconversion d'une chaîne d'entiers (représentant des octets ASCII) en un strobjet 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. numpyest bien meilleur pour traiter les tableaux, mais c'est une dépendance tierce.