Я ожидал, 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
гораздо лучше работать с массивами, но это сторонняя зависимость.