Geschwindigkeit: class-element oder array

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dralban
User
Beiträge: 7
Registriert: Dienstag 17. November 2015, 13:46

Hallo zusammen!
Erst einmal vielen Dank für die Aufnahme!
Und dann gleich meine erste Frage:

Ich muss innerhalb eines langen Codes immer wieder auf eine große Anzahl an kleinen Matrizen (z.B.3x3) zugreifen.

Übersichtlicher wäre es die einzelnen Matrizen als Eigenschaft eines Elements innerhalb einer definierten Klasse abzulegen.
z.B. Klasse: Elemente, Eigenschaft: Transformationsmatrix
=> all_elements[0].transmat = np.array([[1,0,0],[0,1,0],[0,0,1]])

Die Frage wäre nun, ob dies gegenüber einem Abspeichern aller Matrizen innerhalb eines Arrays einen wesentlichen Geschwindigkeitsnachteil mit sich bringt!?

Vielen Dank im Voraus!
Beste Grüße
BlackJack

@dralban: Die Antwort findet man am besten durch ausprobieren und messen heraus. Stichwort Profiling (z.B. `cProfile` und `profile` in der Standardbibliothek). Wobei man nicht nur auf die absolute Geschwindigkeit schauen sollte, sondern auch welche Lösung verständlich(er) ist.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Zusätzliche Datenstrukturen erfordern naturgemäß etwas mehr Rechenaufwand. Aber mit zunehmender Komplexität des Codes werden sie nun mal nötig. Andernfalls erkauft man sich eine bessere Ausführungszeit, indem man die Verständlichkeit der Implementierung dafür opfert. Das muss man gegeneinander abwägen. Meistens ist der Performancegewinn eher gering und man neigt somit zur verständlicheren Datenstruktur.

Wie man die Änderungen in Bezug auf die Ausführungszeit messen kann, schrieb BlackJack ja bereits. Zusätzlich empfehle ich das `timeit`-Modul bzw den in IPython eingebauten `timeit`-Befehl.
dralban
User
Beiträge: 7
Registriert: Dienstag 17. November 2015, 13:46

Vielen Dank Leute!
Antworten