[jdom-interest] Is beta-5 much slower than beta-4?
Elliotte Rusty Harold
elharo at metalab.unc.edu
Thu Oct 19 06:07:18 PDT 2000
At 4:32 PM -0700 10/18/00, Jason Hunter wrote:
>This reminds me of something I've been thinking about wrt performance.
>Elliotte wrote code that checks all text content to ensure it contains
>only legal XML characters. We haven't included it yet because it causes
>a significant performance hit (maybe 10%). What I'd really like is a
>way to configure if you want this checking on or off, but unfortunately
>that's very difficult without adding factories for all object creation,
>and I don't want to go there.
>
I've thought about this a lot. As you know I'm a fanatic about not
letting anything malformed into the document. However, I totally
agree that there's no need to do the check when an object is read by
a parser that is also doing these checks. It's just pointless
duplication of effort.
The natural way I see around the problem is to add some hidden
functions to the various Element, Attribute, ProcessingInstruction,
and other classes that do not make any checks but that could only be
accessed by builders. In C++ you'd do this with friend functions, but
Java doesn't have friend. We could do it with package private methods
but the builder classes are in a different package.
Possible solution 1:
Move the builder classes into org.jdom. In fact ditch the package
structure completely. Put everything in org.jdom. When I was working
on namespaces the output problem was significantly harder for the
same sorts of reasons; i.e. I couldn't create friendly functions in
Element that XMLOutputter could access.
Possible solution 2:
Create special subclasses of Element, ProcessingInstruction etc. in
the org.jdom.input package. Give these package private methods that
don't do the checks (as well as the normal public ones that do). Then
use these subclasses for input rather than the standard versions.
Does anyone see any obvious flaws with this approach?
The public interface to and behavior of these subclasses would be
identical to the interfaces we have now. No client code would need to
be changed. Thus we don't even have to do this optimization now. It
can be rolled in at any convenient time, and I suggest waiting until
the public API is stable and real tests prove it's necessary.
--
+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo at metalab.unc.edu | Writer/Programmer |
+-----------------------+------------------------+-------------------+
| The XML Bible (IDG Books, 1999) |
| http://metalab.unc.edu/xml/books/bible/ |
| http://www.amazon.com/exec/obidos/ISBN=0764532367/cafeaulaitA/ |
+----------------------------------+---------------------------------+
| Read Cafe au Lait for Java News: http://metalab.unc.edu/javafaq/ |
| Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/ |
+----------------------------------+---------------------------------+
More information about the jdom-interest
mailing list