Esperaba array.array
ser 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?
array
paquete. 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()
).
array
es bastante rápido convertir una cadena de enteros (que representan bytes ASCII) en un str
objeto. 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. numpy
es mucho mejor para manejar matrices, pero es una dependencia de terceros.