Ich hatte erwartet array.array
, schneller als Listen zu sein, da Arrays scheinbar nicht in der Box sind.
Ich erhalte jedoch folgendes Ergebnis:
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
Was könnte die Ursache für einen solchen Unterschied sein?
array
Paket verwenden musste. Wenn Sie viel rechnen möchten, arbeitet Numpy mit Lichtgeschwindigkeit (dh C) und ist normalerweise besser als naive Implementierungen von Dingen wie sum()
).
array
Konvertieren einer Ganzzahlfolge (die ASCII-Bytes darstellt) in ein str
Objekt ziemlich schnell ist . Guido selbst kam erst nach vielen anderen Lösungen auf diese Idee und war von der Leistung ziemlich überrascht. Jedenfalls ist dies der einzige Ort, an dem ich mich daran erinnere, dass es nützlich war. numpy
ist viel besser für den Umgang mit Arrays, aber es ist eine Abhängigkeit von Drittanbietern.