Durch wxpython langsamer?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

Hallo,

hab mir für ein relativ rechenaufwändiges Programm eine Benutzeroberfläche auf wxpython geschrieben. Diese ist nur dazu da, um Eingaben für das eigentliche Programm zu machen. In beiden Fällen ist das Programm mit psyco beschleunigt.
Mit Benutzeroberfläche ist das Programm jetzt aber 3-4x langsamer als ohne.


Woran kann das liegen? Und kann man das umgehen?
Danke für eure Hilfe
Frank
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Frank86 hat geschrieben:Hallo,

hab mir für ein relativ rechenaufwändiges Programm eine Benutzeroberfläche auf wxpython geschrieben. Diese ist nur dazu da, um Eingaben für das eigentliche Programm zu machen. In beiden Fällen ist das Programm mit psyco beschleunigt.
Mit Benutzeroberfläche ist das Programm jetzt aber 3-4x langsamer als ohne.


Woran kann das liegen? Und kann man das umgehen?
Danke für eure Hilfe
Frank
Wie ist der Unterschied, wenn du es ohne psyco ausführst?
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

Da ist es nochmal langsamer...
hab aber langsam die Vermnutung, dass es nicht an wxpython sondern an der Verbindung zwischen der Benutzfläche und dem eigentlichem Prozess liegt...
:?
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Frank86 hat geschrieben:Da ist es nochmal langsamer...
hab aber langsam die Vermnutung, dass es nicht an wxpython sondern an der Verbindung zwischen der Benutzfläche und dem eigentlichem Prozess liegt...
:?
Also das Verhältnis console : wxPython
mit psyco ca. 3-4 mal langsamer
und ohne psyco: > 3-4 mal langsamer?

finden irgendwelche Ausgabe während der Berechnung statt?

Wenn es nicht zu gross ist, kannst du ja ein gekürztes vollständiges
Sample posten.
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

der code ist bisschen länger als 8000 zeilen...
aber ich bin mir jetzt ziemlich sicher dass es nicht an wxpython lag... :oops:

liegt wahrscheinlich daran, dass ich das eigentliche Programm einfach eingerückt hab, und zu ner eigenen Funktion gemacht, ums einfacher mit wx verbinden zu können...
kann das sein, dass das so viel ausmacht?
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

Also:
habs jetzt mal umgeschrieben. Liegt wohl daran, dass psyco.full() nicht mehr richtig geht wenn man wxpython mit dabei hat.
wie mach ich das, dass ich nur ne einzellne funktion mit psyco beschleunige?

mit:
import psyco
psyco.bind(Funktion) ?

weil damit geht's nicht richtig :? oder ich wends falsch an....
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Das Problem, das Du beschreibst, hängt vor allem mit der Art und Weise zusammmen, wie solge GUI Programme funktionieren.
Selbst wenn dein wxPython Frontend nichts macht, erhält es
Nachrichten und wertet diese aus.
Im besten Fall ignoriert es diese völlig ...
... und braucht trotzdem CPU Zeit, die von der Rechenfunktion abgezweigt
wird.
Psyco wird da nicht viel bringen, Du musst den GUI und den Rechencode
entkoppeln.
Der Effekt ist je nach OS mal mehr mal weniger
schlimm.
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

naja ok...
danke in jedem fall für eure bemühungen... das entkoppeln lass ich erst mal. die geschwindigkeit ist eh noch mein geringstes problem...

andere frage:

ist es möglich wenn ich mit sizern arbeite und da eine StaticBitmap hab, andere Grafiken drüber zu legen?und deren Position je nach Eingabe des Benutzers zu variieren?

lg
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Es hört sich so an, als suchtest Du eine Entsprechung für
die guten alten Spritefields ?
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Vielleicht klärt das Deine Frage:
wxWidgets Doku 2.6.2:

wxStaticBitmap

A static bitmap control displays a bitmap. It is meant for display of the small icons in the dialog boxes and is not meant to be a general purpose image display control. In particular, under Windows 9x the size of bitmap is limited to 64*64 pixels and thus you should use your own control if you want to display larger images portably.
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

nagut... danke erst mal für deine hilfe...
klingt als würde das alles ein Bisschen aufwändiger als ich mir das vorgestellt hab. :roll:
Antworten