Verwenden Sie das Muster Memoize . Mit diesem neu definieren Kamm:
%Vor% Und ersetzen Sie alle Aufrufe von comb
durch newcomb
. Entfernen Sie für eine kleine Verbesserung auch die Klammern. Wenn Sie explizite Listen erstellen, verschwenden Sie Zeit mit deren Erstellung. Wenn Sie sie entfernen, verwenden Sie effektiv Generatorausdrücke .
Aktualisieren :
Dies wird das nan
Problem nicht lösen, macht es aber viel schneller.
Für alle, die das nicht als schneller sehen, wenden Sie den memoize Dekorateur an? Auf meinem Rechner benötigt die ursprüngliche Funktion 29,7 Sekunden, um bis zu 200 zu erreichen, aber nur 3,8 mit der Version mit Memo.
Was memoize tut, speichert einfach alle Ihre Aufrufe von comb
in einer Nachschlagetabelle. Wenn Sie also in einer späteren Iteration comb
mit den gleichen Argumenten wie zu einem bestimmten Zeitpunkt in der Vergangenheit aufrufen, wird sie nicht neu berechnet - sie wird einfach in der Nachschlagetabelle nachgeschlagen.
Tags und Links python math performance numpy