Andy Salnikov wrote:
The compare method returns < 0 for "smaller", 0 for "equal", > 0 for
"bigger".
Doing so works, but causes a 2 sec delay each time a re-sort has to be done - which is rather annoying (at only less than 1/3 of its expected load!)
Well, this probably comes from PyQt's nature - its a layer between Qt
(which is C++)
and Python. QListView calls some C++ function to sort its items, which in
turn makes
a lot of calls to QListViewItem::compare(). Every call to compare() has to
be
translated from C++ world to Python world, and the result returned back.
Yes. I found another suggestion on the web: overwriting the .key() method,
which has to return the value that is to be compared during sorting.
The .key() method returns a left zero-padded string and thus the string
sorting will yield the correct results.
However, this is even slower than overwriting the .compare() method.
Solutions I could come up with are:
a. derive a C++ QListViewItem that does the numerical sorting and use
this instead of the default QListViewItem in the hope it'll be faster
pro: probably the easyest (faster? fast enough?)
con: not portable
That should be fast enough, I guess, this is the ultimate speed you can
get.
Why isn't it portable?
.... yeah, it surely will run on Windows, but then I'll have to take care of
the cross-compilation, etc. Which Windows user has a C++ compiler
installed?
Portability is surely my (personally) least problem, but working with Python
its not nice giving up this "portability" feature: take the sources to
another platform - run.
Another possibility: Have you got any experience with Psyco? I just heard
about it, but didn't go into much details until now. Perhaps the
just-in-time compiler will boost the performance...
Thanks
Uwe