(and to the list again... doh)
On Jan 10, 2008 3:26 AM, Alan McGovern <[EMAIL PROTECTED]> wrote: > Hi, > > Yeah, by reducing the method searchs performance increases by 15% or > so. I'll work that patch up tomorrow at some stage. > > Thanks, > Alan. > > > On Jan 10, 2008 1:07 AM, Robert Jordan <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I've filed it: > > > > https://bugzilla.novell.com/show_bug.cgi?id=352805 > > > > BTW, the "previousObject" check in your patch is still useful, > > as it cuts down the type.GetMethod ("Add") calls from > > collectionLength to 1, if I understand the patch correctly. > > > > Just remove the CreateDelegate stuff and extend the optimization > > to cover NET 1.1 as well. > > > > Robert > > > > > > > > Alan McGovern wrote: > > > (and also sending to the list...) > > > > > > On Jan 10, 2008 12:41 AM, Alan McGovern <[EMAIL PROTECTED]> wrote: > > >> Hi, > > >> > > >> I was wondering about that alright. It did seem a bit weird that it > > >> would work, i would've expected the delegate parameter to be at least > > >> as restrictive as the method i was calling. Bang goes that idea then. > > >> > > >> Alan. > > >> > > >> > > >> On Jan 10, 2008 12:36 AM, Robert Jordan <[EMAIL PROTECTED]> wrote: > > >>> Robert Jordan wrote: > > >>>> Alan McGovern wrote: > > >>>>> There was a thread a week or two ago called 'Speed difference Windows > > >>>>> - Linux' which noted there was a big difference in performance between > > >>>>> .NET and mono. I did a brief bit of profiling and came up with this > > >>>>> patch which improves performance ~30% for the testcase which was > > >>>>> attached in the email. This reduces runtime memory usage by about 10MB > > >>>>> (80MB -> 70MB) and decreases processing time by 30% (3.4s -> 2.6s). > > >>>>> > > >>>>> Anyone have any ideas on how to tidy this up to make it neater? Also, > > >>>>> would this optimisation be too specific, or can it be generalised > > >>>>> somewhere higher up in the stack. > > >>>> I don't think the patch is correct. It is assuming that every > > >>>> "Add" method of a collection/list is compatible with > > >>>> AddDelegate(object). > > >>>> > > >>>> If the test cases are still working, it could be that > > >>>> CreateDelegate is buggy: MSDN states: > > >>>> > > >>>> "A parameter of a delegate is compatible with the corresponding > > >>>> parameter of a method if the type of the delegate parameter is more > > >>>> restrictive than the type of the method parameter, because this > > >>>> guarantees that an argument passed to the delegate can be passed safely > > >>>> to the method." > > >>> It's indeed a bug in Mono's CreateDelegate. The following test case > > >>> must fail but it doesn't: > > >>> > > >>> using System; > > >>> > > >>> delegate void Method(object o); > > >>> > > >>> class T > > >>> { > > >>> static void Main () > > >>> { > > >>> T t = new T (); > > >>> Method m = (Method) Delegate.CreateDelegate > > >>> (typeof(Method), t, > > >>> t.GetType ().GetMethod ("Test")); > > >>> m (new Uri ("http://mono-project.com")); > > >>> } > > >>> > > >>> public void Test (Uri uri) > > >>> { > > >>> Console.WriteLine (uri); > > >>> > > >>> } > > >>> } > > >>> > > >>> Robert > > >>> > > >>> _______________________________________________ > > >>> Mono-list maillist - [email protected] > > >>> http://lists.ximian.com/mailman/listinfo/mono-list > > >>> > > > _______________________________________________ > > > Mono-list maillist - [email protected] > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > > _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
