Hello Guys, Well After a lot of playing with the code, I have a normalized version ready; this version should use less strings and generated less object creation because every genre, artist and album strings are created only one time, and the browser use instance compare instead of a string compare, also many calls to ToLower are no longer necessary. I have been trying to get some profile information but the mono one does not throw anything useful and the heap buddy segfault (maybe outdated?); but from my experience in java i try to extrapolate and replace expensive operation for cheaper one when possible. To avoid a reloading I change the PlayModel to implement the TreeModel interface instead of inheriting the ListStore, this allow the stacking of models, in this way it will be possible to add search to the library view without the extra cost of re-filtering the whole library, and also I add sorting back only this acts only on the visible items and not in the whole library. I was experimenting with having pre-filtered models cached but it becomes simply to complicated and the TreeFilter has the problem that the underlying model is read only, so the whole stacked model has to be cached, that is maybe more than what is desirable. My idea is replace also the PlayListSource handling to use the filters instead of reloading, this way only one store will be need it. I think this should simplify importing operations. Though not ready i will like that some people (specially Aaron) take a look at it, the patch was done on a banshee version 0.10.5 . Beside the patch a new cs file that should be copied to src/Banshee.Base/ is part of the tarball. Best regards, Oscar Forero.
Attachment:
banshee-normalized.tbz
Description: Binary data