Eu esperava array.array
ser mais rápido que as listas, pois as matrizes parecem estar fora da caixa.
No entanto, recebo o seguinte 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
Qual poderia ser a causa dessa diferença?
array
pacote. Se você deseja fazer quantidades significativas de matemática, o Numpy opera na velocidade da luz (ou seja, C), e geralmente melhor do que implementações ingênuas de coisas como sum()
).
array
é muito rápido na conversão de uma sequência de números inteiros (representando bytes ASCII) em um str
objeto. O próprio Guido só conseguiu isso depois de muitas outras soluções e ficou bastante surpreso com o desempenho. Enfim, este é o único lugar em que me lembro de vê-lo sendo útil. numpy
é muito melhor para lidar com matrizes, mas é uma dependência de terceiros.