Я ожидал, array.arrayчто будет быстрее, чем списки, так как массивы кажутся распакованными.
Однако я получаю следующий результат:
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
Что может быть причиной такой разницы?
arrayпакет. Если вы хотите сделать значительный объем математики, Numpy работает со скоростью света (то есть C), и обычно лучше, чем наивные реализации таких вещей, как sum()).
arrayдовольно быстро конвертировать строку целых чисел (представляющих байты ASCII) в strобъект. Сам Гвидо придумал это только после множества других решений и был весьма удивлен производительностью. Во всяком случае, это единственное место, где я помню, что это полезно. numpyгораздо лучше работать с массивами, но это сторонняя зависимость.