[Mono-dev] [PATCH] - optimization for System.Xml.XmlNode::SelectSingleNode

Atsushi Eno atsushieno at veritas-vos-liberabit.com
Mon May 10 13:55:50 EDT 2010


Hi,

Thanks Tom, it looks like a good catch. The interface is internal, and 
cast exceptions should not happen there anyways. Once the build got 
fixed, I'll verify the patch and apply it unless it regresses.

Atsushi Eno


On 2010/05/11 2:09, tom hindle wrote:
> Hi,
>
> While performance profiling our code, with mono's nice profiling
> tools :), I noticed System.Xml.XmlNode::SelectSingleNode was taking 23ms
> a call while the sum of the methods it was calling took<  5ms.
> SelectSingleNode is a very simple method however it contains a (dynamic)
> down cast. I replaced the (Cstyle/prefix) cast with a 'as' cast and this
> seem to reduce the method time by about 7ms.
>
>
> // With 'Cstyle' cast
>   39672.303    1717   23.106
> System.Xml.XmlNode::SelectSingleNode(string,XmlNamespaceManager)
>    Callers (with count) that contribute at least for 1%:
>          1717  100 % System.Xml.XmlNode::SelectSingleNode(string)
>
> // With 'as' cast
>   29238.117    1880   15.552
> System.Xml.XmlNode::SelectSingleNode(string,XmlNamespaceManager)
>    Callers (with count) that contribute at least for 1%:
>          1880  100 % System.Xml.XmlNode::SelectSingleNode(string)
>
>
> I read that this is because 'as' cast generates IL instr 'isinst' while
> 'cstyle' cast generates 'castclass'.
>
> The msdn documentation about XmlNode.SelectSingleNode doesn't state that
> an InvalidCastException, can/could be thrown.
>
> Is this a sensible thing to do? If so could someone review/commit my
> patch as I believe it will make a fairly major difference for
> applications that make much use of SelectSingleNode.
>
>
> Thanks
> Tom
>    
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>    



More information about the Mono-devel-list mailing list