[Mono-devel-list] Interop with unmanaged code withoutcopyingor memory allocation?
Karl Waclawek
karl at waclawek.net
Tue Jan 13 09:09:15 EST 2004
> .NET provides the System.Xml.XmlReader API instead of a the SAX API
> (which has also been implemented by libxml2).
You mean, there is an XMLReader wrapper for libxml2?
Such a wrapper for Expat would also be a nice idea, but likely
add some additional overhead, as Expat would need to be stopped
and re-started frequently.
> It avoids the memory
> overhead of a DOM, and the callback issues with SAX. Conceptually, it
> resembles a compiler lexer -- you Read() to get the next "token" (XML
> element), which you can then inspect using the XmlReader properties.
I know, a Pull API can be quite easy to use. However, there is a lot
of SAX based code out there, and it may be nice if it can be ported to
C# without a major rewrite. There may also be some apps where SAX
is a good choice.
> XmlReader is intended for processing multi-gigabyte files. I'm not sure
> if it's actually successful in doing so, but it *should* be able to do
> so, without requiring gigabytes of memory (like a DOM would require).
Yes, I am aware of that. The advantage of Expat would not only
be the low memory requirements, but also its speed.
> It would be interesting to know if XmlReader can be used for your
> particular high performance applications.
I know for sure that Expat can. ;-)
Karl
More information about the Mono-devel-list
mailing list