Spodziewałem array.array
się, że będę szybszy niż listy, ponieważ tablice wydają się być rozpakowane.
Jednak otrzymuję następujący wynik:
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
Co może być przyczyną takiej różnicy?
array
pakietu. Jeśli chcesz robić duże ilości matematyki, Numpy działa z prędkością światła (tj. C) i zwykle lepiej niż naiwne implementacje rzeczy takich jak sum()
).
array
że konwersja ciągu liczb całkowitych (reprezentujących bajty ASCII) na str
obiekt jest dość szybka . Sam Guido wymyślił to dopiero po wielu innych rozwiązaniach i był dość zaskoczony występem. W każdym razie jest to jedyne miejsce, w którym pamiętam, że jest przydatne. numpy
znacznie lepiej radzi sobie z tablicami, ale jest zależnością od strony trzeciej.