Re: [xml] Query Regarding Buffer allocation scheme in Libxml



On Wed, Jul 02, 2008 at 07:15:00PM +0800, Ashwin wrote:
Hi Daniel,

  Hi Ashwin

          I have a query regarding the buffer allocation scheme used in
libxml, each time a document is sent for parsing libxml creates a buffer of
size 4k*2 initially, and then increases this if the doc happens to exceed
this size. My query is, whether there is some specific reason why the
original buffer is not used, rather than allocating another buffer and doing
a memmove.  

  Good question, it's an optimization I tried to do ...

  I have looked at that a long time ago. Basically you would need to mark
the buffer immutable (that is easy) but also change the parser low level
to detect the end not on the 0 byte in the termination string but based on
the index in the string (since the API can take any kind of encoding,
the API uses a string lenght index, but internally the last character is
detected via the 0 character at the end). An intermediate approach could have
been to start parsing directly from an immutable buffer based on the input
string and just switch to a small normal buffer when getting to the end of
the input. But in any case those were significant code changes in really
critical parts of the parser and I had stability problems with the result
so I dropped the patch and never commited it. I guess the improvement
would interest only those using libxml2 in embedded system, and well 
your question seems to confirm this ;-)

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard redhat com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/



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