[Mono-dev] List<T> Optimisations

Alan McGovern alan.mcgovern at gmail.com
Mon Mar 26 12:38:14 EDT 2007


Whoops, attaching the right patch this time...

Alan.

On 3/26/07, Alan McGovern <alan.mcgovern at gmail.com> wrote:
>
> Attached is a newer patch which removes the use of: "this." as it's
> against the mono coding guidelines.
>
> Alan.
>
> On 3/26/07, Alan McGovern <alan.mcgovern at gmail.com> wrote:
> >
> > I was just browsing through the List<T> implementation and made a few
> > speed optimisations. I'm not sure if changing from foreach(blah) to for(int
> > i=0; i< blah, i++) is ok or not, but it does offer a large speed increase.
> > So let me know if that's ok or not.
> >
> > Optimised Methods:
> > RemoveAll - from 0x up to 50x faster
> >
> > (The reason for the huge speed increase is that if you have a list<int>
> > containing entirely the number 5, removing from the end will be much more
> > efficient than removing from the start as you won't have to shift the entire
> > array over and over. Removing from the end will *always* be faster than
> > removing from the start, but the exact speed increase is highly dependant on
> > the number of matches).
> >
> > Add - 0.3x faster
> >
> > ConvertAll - 0.5x faster
> >
> > Exists - 0.04x faster
> >
> > Find - 0.05x faster
> >
> > ForEach - 2.7x faster
> >
> > InsertAt - up to 0.2x faster (if addind at the end)
> >
> > RemoveAll - 0.11x faster
> >
> > True For All - 2.3x faster
> >
> > Patch attached. Let me know if it's good to commit. It still passes the
> > NUnit tests.
> >
> > Alan.
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070326/74597cce/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ListT.patch
Type: text/x-patch
Size: 3922 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070326/74597cce/attachment.bin 


More information about the Mono-devel-list mailing list