was ist schneller oder sonstwie besser?

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.
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

BlackJack hat geschrieben:Grundsätzlich würde ich bei Tagen auch erst einmal die Algorithmen und Datenstrukturen auf den Prüfstand stellen.
Dass mein laufender Algorithmus schlecht ist, das sehe ich auf den ersten Blick. Aber bei komplexen Berechnungen ist es oft gut, verschiedene Algorithmen laufen zu lassen, um die Ergebnisse miteinander zu vergleichen: schließlich gibt es auch inhaltliche Codierfehler.


:mrgreen: Da du vorher die Lesbarkeit ansprachst: so etwas wie

Code: Alles auswählen

ff = dict((x,ffx) for x, ffx in ff.iteritems() if ffx != 0)
anstelle von

Code: Alles auswählen

ff = dict((x,ffx) for (x,ffx) in ff.iteritems() if not ffx==0)
halten nur Holländer (eigentlich nur einer) für lesbar. Ich weiß, dass das hier fast alle tun, aber denen ist Lesbarkeit für Outsider egal. :mrgreen:
BlackJack

@Goswin: Den inhaltlichen Fehlern rückt man eigentlich eher mit guten Unit-Tests zuleibe als mit ineffizienten Algorithmen und Datenstrukturen. ;-)
Benutzeravatar
Goswin
User
Beiträge: 366
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

BlackJack hat geschrieben:@Goswin: Ich würde da nichts löschen sondern ein neues Wörterbuch erzeugen. Seiteneffekte zu minimieren ist sowieso meistens eine gute Idee.
Zum Algorithmus:
Bei etwa n=1000 habe ich ein defaultdict mit O(n*n) Entries, wovon ich pro Iteration nur O(2*n) Entries hinzufügen oder entfernen möchte. Hältst du es in so einem Fall immer noch für eine gute Idee, beim Entfernen von Entries jedesmal ein neues defaultdict zu bauen?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Was ist denn das Gesamtproblem? Du beschreibst ja nur einen kleinen Ausschnitt *Deiner Lösung* relativ wage... damit kann man wenig anfangen!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Goswin: Wie gesagt, das ist mir zu wenig Kontext und wenn die Algorithmen und Datenstrukturen sowieso schon nicht so besonders sind, dann würde ich/man das vielleicht sowieso komplett anders angehen.
Antworten