[jdom-interest] New benchmark
pankaj_kumar at hp.com
Tue Jul 2 22:48:50 PDT 2002
Hi Jason, Brad,
Thanks for bringing this to my notice. Brad's analysis is correct. I have
submitted a bug (
214&atid=419698 ) and have added the following note:
Verified as a problem in JDOMProcessor.java code.
Measurements with indexed traversal ( original ) and iterator
traversal (modified) confirm that the non-linear performance
degradation happens with indexed traversal. XStat Processing
time ( in ms ) for three files generated by rxgen of sizes
99KB, 984 KB and 1984KB were observed as:
99KB 984KB 1984KB
Original -----> 65 -------- 1000 ---------- 3250
Modified ----> 62 -------- 422 ----------- 828
(i) check-in the modified code to CVS.
(ii) Put a note at XPB4J measurements document.
(iii) Update the measurements document with new readings in
the next revision cycle.
It is appropriate to use the most efficient algorithm/interfaces
offerred by a particular API. However, the reason
JDOMProcessor had indexed traversal code was that I
modified the code for DOM based processing with least
amount of changes -- something that other folks may also do.
Other thing is that though XStat processing requires only
linear scan, other applications might required more frequent
indexed access. Those applications could suffer under
A better solution may be to have List implementation used by
JDOM be optimized for indexed access as well as iterator
From: Bradley S. Huffman [mailto:hip at a.cs.okstate.edu]
Sent: Tuesday, July 02, 2002 1:01 PM
To: Jason Hunter
Cc: jdom-interest at jdom.org; hip at a.cs.okstate.edu
Subject: Re: [jdom-interest] New benchmark
Jason Hunter writes:
> Interesting reading. JDOM's looking pretty good (and that's
> particularly impressive since b8 had the StringBuffer performance bug).
> But look at the last chart. There's clearly some bug there we need to
> track down!
Hmmm, looks more like a case of either not reading the docs., or us not
being clear/obvious enough in our docs. But looking in
org.xperf.xpb.xstat.jdom.JDOMProcessor.java, I see
private void collectStat(Element elem, StatCollector sc)
List children = elem.getChildren();
for (int i = 0; i < children.size(); i++)
However the javadocs for Element.getChildren() states
Sequential traversal through the List is best done with a Iterator since
since the underlying implement of List.size() may not be the most
Bet you if the code is change to use a Iterator, the times would look a
lot better. Maybe a nice note to Mr. Kumar would be appropiate :)
More information about the jdom-interest