Я очікував, що 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 працює зі швидкістю світла (тобто С), і, як правило, краще, ніж наївні реалізації подібних речей sum()
).
array
досить швидко в перетворенні рядка цілих чисел (що представляють ASCII байти) в str
об'єкт. Сам Гвідо придумав це лише після багатьох інших рішень і був дуже здивований виступом. У всякому разі, це єдине місце, де я пам’ятаю, як бачив, що це корисно. numpy
набагато краще для роботи з масивами, але це стороння залежність.