Speichern von Python-Objekten in einer Python-Liste im Vergleich zu einem Numpy-Array mit fester Länge
Bei einigen Arbeiten zur Bioinformatik habe ich mir überlegt, wie sich das Speichern von Objektinstanzen in einem Numpy-Array und nicht in einer Python-Liste auswirkt, aber bei allen Tests, die ich durchgeführt habe, war die Leistung in jedem Fall schlechter. Ich benutze CPython. Kennt jemand den Grund dafür?
Speziell:
Welche Auswirkungen hat die Verwendung eines Arrays mit fester Länge auf die Leistung?numpy.ndarray(dtype=object)
gegen eine normale Python-Liste? Erste Tests, die ich durchgeführt habe, haben gezeigt, dass der Zugriff auf die Numpy-Array-Elemente langsamer war als die Iteration in der Python-Liste, insbesondere bei Verwendung von Objektmethoden.Warum ist es schneller, Objekte mit einem Listenverständnis wie. Zu instanziieren?[ X() for i in range(n) ]
anstelle einernumpy.empty(size=n, dtype=object)
?Was ist der Speicheraufwand von jedem? Ich konnte das nicht testen. Meine Klassen nutzen ausgiebig__slots__
, wenn das Auswirkungen hat.