----- Original Message ----- 
From: "Dave Sellers" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, June 03, 2005 3:00 PM
Subject: [list] Re: [delphi-en] TObjectList.Sort issues


> Well that's gratifying news!
>
> On the speed issue you're right I'm sure - I do have to do a lot of work
> in the comparison function involving database access and XML parsing
> (it's a long story!). I might optimize that by prepopulating my objects
> with everything needed for the sort prior to calling sort()
>
> One thing I did notice when I gave it a list of 6k objects to sort was
> it gobbling up memory - it was up to 250MB from 30MB before I got tired
> of waiting and killed it.  Tests with a smaller list show that my exe
> memory usage in TaskManager grows by about 750kB per sort and never goes
> down again.
>
> I don't allocate any memory in my comparison function so I wonder where
> it's going?  Or is it just taskmanager misleading me.....

Hmm no, that sounds seriously suspicious to me.  It sounds to me like you 
must have a memory leak somewhere along the line, if not directly in the 
sort function then inside one of the things that gets called from it.  Try 
running the sort routine replacing the default delphi memory manager with 
the MemCheck one, and see if it complains when you shut the app down. 
MemCheck is available here:
http://v.mahon.free.fr/pro/freeware/memcheck/

I can really recommend using the MemCheck unit, I program using MemCheck 
very often these days (nearly permanently), and tend to only remove it when 
doing proper builds.  Having it there permanently means I know really 
quickly instantly when I've borked up something with respect to memory 
management.  It's even helped me find a bug or 2 in the VCL (for example 
#11759 on qc.borland.com) so it's really worth it's salt IMHO.

Also re your TObjectList sort awkwardness issues: This issue to me is 
somewhat poor VCL design (and is actually a consequence of TObjectlist being 
descended from TList.)  One way of properly cleaning up the issue is to 
create your own Object List class, which may be done by taking the TList and 
TObject list sources and replacing references to TListSortCompare to a type 
which is "of object", which will allow you to use (for example) and instance 
method on your form (avoiding all the ugliness.)  If you're interested in 
this sort of solution and want help, then post back and I can have a quick 
stab at it (it shouldn't take long to knock out a TObjectListEx that does 
what you want...)

Regards

Walter 



-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED] 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/delphi-en/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to