Esperaba array.arrayser más rápido que las listas, ya que las matrices parecen estar sin caja.
Sin embargo, obtengo el siguiente resultado:
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
¿Cuál podría ser la causa de tal diferencia?
arraypaquete. Si quieres hacer cantidades significativas de matemáticas, Numpy opera a la velocidad de la luz (es decir, C), y generalmente es mejor que implementaciones ingenuas de cosas como sum()).
arrayes bastante rápido convertir una cadena de enteros (que representan bytes ASCII) en un strobjeto. El propio Guido solo se le ocurrió esto después de muchas otras soluciones y quedó bastante sorprendido por el rendimiento. De todos modos, este es el único lugar donde recuerdo haberlo visto útil. numpyes mucho mejor para manejar matrices, pero es una dependencia de terceros.