[mercury-users] XML Parsing (fwd)
Fergus Henderson
fjh at cs.mu.OZ.AU
Tue Jun 12 12:26:30 AEST 2001
On 08-Jun-2001, Thomas Conway <conway at cs.mu.OZ.AU> wrote:
> On Fri, Jun 08, 2001 at 11:48:18AM EST, Michael Day wrote:
> > >From what I can see, 40% of the time is being spent in
> > xml:parse:chars:baseChar/2, which makes it look like character
> > interpretation *is* the culprit after all. Comments from people who know
> > how to understand profiles would be nice.
> >
> > (the program executed was tryit compiled with -O6 and mgnuc with -O2 run
> > on a largish XML file with namespaces)
> >
>
> Well, I just examined the C code and it's not hard to see what the
> problem is. The closure is not being constructed as a static ground
> term, so the C code is constructing that whole horrible thing for each
> character of input it tries to read. I'm not certain, and I don't have
> time to look right now, but I'm pretty sure this is a bug in the compiler.
I had a look. The reason that it needs to construct the closures dynamically
rather than statically is because they contain the type_info for the type `T1'.
(As it happens, I think this will probably not actually be used
unless debugging is enabled, but inferring this would require fairly
sophisticated intermodule analysis.)
So you might get a big speed-up by making the routines monomorphically typed
rather than polymorphically typed, or by using the user-guided type
specialization pragmas (see the "pragmas" chapter in the language reference
manual).
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list