Lists Home |
Date Index |
* Bob Foster <email@example.com> [2004-12-31 19:37]:
> Alan Gutierrez wrote:
> > * Bob Foster <firstname.lastname@example.org> [2004-12-31 18:03]:
> >>I have a question, though. What is the guaranteed lifetime of an object
> >>appearing in a SAX event, like an Attributes object, and any objects
> >>used to implement it? If, for example, Attributes were implemented as a
> >>collection of lightweight Attribute objects that were re-used for
> >>subsequent events, the event data could not be passed directly to
> >>parallel threads without copying it. (Or by joining at the end of every
> >>event, which would rather limit the parallelism.)
> > Xerces recycles Attributes structures for each call to
> > startElement.
> > In my library, I keep a stack of attribute structures. The
> > attribute structures on the stack are recycled for each element
> > depth, not actually popped and reallocated.
> Right. In order to process a SAX stream in parallel you have to
> copy the data in the stream, you can't just "forward" the events.
> You also have to instantiate a context for each event, including
> at least the namespaces in scope, the Location info. I didn't mean
> to imply this would be excessively expensive, just not as
> lightweight as serially processed SAX.
Wasn't out to school you, so much as to relate my experience.
Alan Gutierrez - email@example.com