Performance ohne Psycho?

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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 :( .
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Es gibt immer noch PyPy und den extcompiler. xorAxAx im IRC kann dir dabei vielleicht weiterhelfen.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Antworten