Re: memory allocations / libxml
- From: Daniel Veillard <veillard redhat com>
- To: Michael Meeks <michael ximian com>
- Cc: Havoc Pennington <hp redhat com>, gnome-hackers gnome org
- Subject: Re: memory allocations / libxml
- Date: Tue, 5 Mar 2002 08:12:23 -0500
On Tue, Mar 05, 2002 at 12:24:29PM +0000, Michael Meeks wrote:
> On Tue, 2002-03-05 at 01:09, Daniel Veillard wrote:
> > Libxml works on a set of platform far larger than glib.
> > http://mail.gnome.org/archives/gdome/2002-February/msg00008.html
> > Enjoy !
>
> Fascinating, AFAIK Dan Winship has got evolution running on MacOS X -
> which presumably entails porting glib, is it possible that there have
> been some portability regressions in glib-2.0 ? The bug report is
> incredibly vague and unusable to the glib team to help fix anything
> though.
there is another report on that thread about the pain of trying to build it
on RiscOS. I think that report was relatively detailed.
In both case you have the people email and can ask for more specific
feedback.
> > in a lot of case the length of the buffer ain't available so add an
> > extra xmlStrlen() penalty to your alloca path
>
> In general I was proposing optimizing the path that showed on the
> profile if it could be found; inasmuch that xmlStrndup showed on the
> profile, it might seem that it was an area ripe for some alloca action.
>
> Incidentally it seems that xmlStrdup and most of the xml family malloc
> type string handlers chain to xmlStrndup - thus it might seem that the
> length is ~always calculated.
Depends, not always.
> Of course - quite apart from any clever malloc/alloca tricks, it would
> quite possibly be sufficient to have a stack managed arena, referenced
> from the xmlParserCtxtPtr that provided the equivalent of a more
> portable / ideal alloca type impl. where one could decide the
> granularity of allocation far more effectively, and implement it using
> malloc.
And when that string ends up in a DOM representation which then may be passed
from a document to another, libxml2 just segfault ?
> An API like this might suffice:
>
> gulong mstack_alloc_begin_scope (xmlParserCtxtPtr ctxt);
> const xmlChar *mstack_alloc_strndup (xmlParserCtxtPtr ctxt,
> const xmlChar *buf,
> guint length);
> void mstack_alloc_restore_scope (xmlParserCtxtPtr ctxt,
> gulong offset);
>
> And require an addition to the parser context of perhaps:
>
> xmlChar *base_buffer;
> gulong base_buffer_size;
> xmlChar *cur_ptr;
>
> Oh, and of course assuming we did fairly few reallocs we would have ~0
> malloc overhead, and of course save a lot of 'free' invocations, and get
> more inlining type optimization (perhaps).
perhaps. Okay if libxml2 is too slow for you. As I said and will repeat
show me the code, have it run in non-trivial apps, prove it's portable and
then I will certainly incorporate it. People from Sun went through that
process for threading support, feel free to go ahead.
> How does the above sound ?
Lot of hard work for still unclear result. Still I take patches
if they look maintainable.
Daniel
--
Daniel Veillard | Red Hat Network https://rhn.redhat.com/
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]