[Python-de] wxPython - Sortierung viel zu langsam :(

Christian Tismer tismer at tismer.com
Tue May 7 18:48:20 EDT 2002


Gerson Kurz wrote:
> Ich spiele zur Zeit nebenbei ein bisserl mit wxPython rum, und habe mal aus
> Spaß einen kleinen File-Browser-Verschnitt angefangen. Das funktioniert
> soweit ganz gut, (und ich war von wxPython positiv überrascht) aber ich habe
> *heftige* Performanceprobleme.
> 
> Folgendes: Ich benutze zum Sortieren der Darstellung das
> "wxColumnSorterMixin" aus wxPython.lib.mixins.listctrl. Bei "kleinen"
> Verzeichnissen (klein < 100) klappt alles noch "im Rahmen des Erträglichen";
> wenn ich mein WINNT\SYSTEM32 anzeigen lassen, habe ich folgende Messwerte
> 
> Took 0.24 seconds to read 'C:\WINNT\system32' [2012 Dateien]
> Took 0.00 seconds to delete all items
> Took 1.90 seconds to insert all items
> Took 158.49 seconds to sort all items
> 
> Weit über 2 Minuten, auf einem Dual Athlon 1900 mit 1G Ram für das Sortieren
> von 2012 Dateien - daß muss mir erst mal einer nachmachen :( Ich habe den
> "Übeltäter", glaube ich, in der Sortfunktion eingegrenzt; was jetzt?
> 
> (Es ist übrigens mehr-oder-minder egal, welches Sortierkriterium (Zeit,
> Datum, Name, Dateiattribute etc.) - die Zeiten ähneln sich.)

Ohne jetzt hineinzusehen habe ich die Vermutung, daß
man auf das virtuelle Listenfeature umschalten sollte.
Zumindest von Windows-Listen her kenne ich nahezu
quadratisches Verhalten bei Einfügeoperationen.
Bei "großen" Listen (irgendwo um 1000 Einträge oder mehr)
lohnt es sich unglaublich, auf die virtuelle Arbeitsweise
umzusteigen. Dann wird für jedes anzuzeigende Feld zwar
ein Callback aufgerufen, aber dafür werden die Daten nicht
alle aufwendig in die Control gestopft.

Ich könnte mir gut vorstellen, daß das bei Sort auch hilft,
denn ich glaube nicht daran, daß das Sortieren selber lange
dauert, sondern die Zugriffe auf die Felder.

Bei Windows-Controls habe ich zudem den Effekt, daß ich nur
meine interne Datenstruktur sortieren muß und dann ein
Invalidate auf die Control gebe. Die gibt dann die sichtbaren
Daten wieder neu aus.

Wie gesagt, mit wxPython habe ich in der Hinsicht wenig
Erfahrung, aber bin recht sicher, daß es in etwa trifft.

ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  pager +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/





More information about the Python-de mailing list