[Mono-dev] List<T> Optimisations
Alan McGovern
alan.mcgovern at gmail.com
Mon Mar 26 12:03:26 EDT 2007
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/f4caab2e/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ListT.patch
Type: text/x-patch
Size: 4058 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070326/f4caab2e/attachment.bin
More information about the Mono-devel-list
mailing list