Seite 1 von 1

Performance ohne Psycho?

Verfasst: Freitag 9. Februar 2007, 13:08
von CM
Hoi,

ich habe ein Modul gebastelt, daß mir inzwischen unter manchen Umständen etwas lahm erscheint (*). Code in C auslagern kommt hier nicht in Frage, da es zu komplex geworden ist (zuviel abstrahierten Kram auf einem Fleck kann ich jedenfalls nicht mehr in C übersetzen).
Mir würde ja Psycho gefallen, aber das gibt es leider nur für 32bit Platformen - und die habe ich nicht (mehr).

Weiß jemand eine Alternative? (Ich arbeite mit numpy, also sollte diese Alternative numpy-arrays erkennen können.)

Gruß,
Christian

*) Die Ordnung des zentralen Algorithmus ist N*(N/2) (oder wie auch immer "richtige" Informatiker schreiben) und operiert auf 3D-Volumen. Bei meinen Test von 32**3 ist das kein Problem, aber bei den echten Daten muß ich mit mindestens 56**3 Voxeln arbeiten, weil ich sonst meine Daten "undersample" (Deutsch?). Rebinning ist also keine Lösung :( .

Verfasst: Freitag 9. Februar 2007, 13:28
von birkenfeld
Es gibt immer noch PyPy und den extcompiler. xorAxAx im IRC kann dir dabei vielleicht weiterhelfen.

Verfasst: Freitag 9. Februar 2007, 15:47
von CM
Hoi

ah, vielen Dank. Auf PyPy wird zwar von Psycho verwiesen, aber den extcompiler habe ich dort übersehen.
Mal schauen wann ich Zeit finde das auszuprobieren.

Gruß,
Christian

Re: Performance ohne Psycho?

Verfasst: Freitag 9. Februar 2007, 20:37
von Joghurt
Nur der Vollständigkeit halber:
CM hat geschrieben:*) Die Ordnung des zentralen Algorithmus ist N*(N/2) (oder wie auch immer "richtige" Informatiker schreiben)
Die würden O(N^2) schreiben.

Verfasst: Samstag 10. Februar 2007, 11:05
von Leonidas
Vielleicht hilft dir ja auch Pyrex? Das kompiliert zwar auch zu C, aber es bietet dir ein Subset von Python, mit dem man sicherlich als Python-Programmierer etwas angenehmer Programmieren kann, als mit purem C.

Verfasst: Montag 12. Februar 2007, 18:41
von CM
Ah, Danke Marek, das ist sicher auch eine Überlegung wert.
Allerdings frage ich mich bei allen Alternativen jetzt, wie ich das Ganze portabel halte. (Ich denke tatsächlich darüber nach das Modul zu publizieren ...)

Gruß,
Christian

Verfasst: Dienstag 13. Februar 2007, 14:08
von Leonidas
CM hat geschrieben:Allerdings frage ich mich bei allen Alternativen jetzt, wie ich das Ganze portabel halte.
Also soweit ich weiß, werden Pyrex und SWIG von den Distutils unterstützt, es portabel zu halten bedeutet nur so viel, als dass man die Pyrex-Daten für jede Platform durch den Compiler jagt und dann als Egg oder Installer online stellt.
Hat natürlich auch seine Nachteile, zum Beispiel dass es bei einer neuen Python-Version nötig wird zu rekompilieren, aber solange du das Modul noch maintainst ist alles in Ordnung.

Verfasst: Dienstag 13. Februar 2007, 14:37
von CM
Ja, genau da liegt mein Problem: Ich habe nur eine sehr beschränkte Auswahl an Platformen zur Verfügung ... :wink:

Aber eigentlich ist das noch Zukunftsmusik: Erst einmal muß alles klappen, dann wird eine Dokumentation geschrieben und dann ggf. folgt die Veröffentlichung - beim gegenwärtigen Streß nicht unter vier Monaten.

Gruß,
Christian