Re: Beagle and nautilus


On Fri, 2005-12-09 at 08:33 -0500, D Bera wrote:
> PS: One of the places where C#-search api might be slower that
> libbeagle is XML serialization. Creating an XML serializer is costly
> and serializing/deserialing is slow in C#. Apparently the tools  like
> genxs.exe and sgen.exe
>  are helpful in these scenarios. If anybody has experience using them
> or knows how useful are they, please let me know.

genxs is only for customizing the serialization process.  It doesn't
result in any precompiled code, so that wouldn't really affect
performance in any appreciable way.

In the simplest case, it looks like the biggest overhead in creating an
XmlSerializer is that it calls into the
System.Configuration.ConfigurationSettings code, which causes a bunch of
XML to be parsed (ironic, yes).  Removing that code reduces overhead by
about 65%, but this is only on the order of 100ms.

For us, in creating the XmlSerializer, it looks like the overhead is in
getting type information for all of the various different Request
classes.  It's a one-time cost -- for me about half a second -- so in
long-living applications like Best or Holmes it won't be noticeable.
It's only in short-lived apps (like the now-unused beagle-index-url)
that it's a problem.

Actual deserialization speed I haven't measured, but it doesn't surprise
me that the C version is faster.  It's a lower-level implementation, and
it ends up being a lot more code to parse.  Moreover, I'm not sure if
moving to a specialized parser in C# would gain us that much, and I
certainly don't think it's worth the effort at this point.  Generally
speaking, I'm rather happy with the *querying speed* of Beagle.  What
I'm not satisfied with is the *rendering speed* of Best.  Just using
Holmes, you can see that it's much, much better.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]