JDOM2 Performance
Java manipulation of XML made easy.
The following is a basic metric of the performance characteristics of JDOM2.
This is not meant to be a reproducable baseline, rather, it is intended to
give an idea of whether a change has improved or decreased the performance.
Running this test on different computers is meaningless. You need to run the
same tests on different code to compare the code changes, not the computers.
For some sense of consistency, I have chosen 'hamlet' as a base XML document
to test. It is available for
free on ibiblio.
The raw
Hamlet
is not actually valid XML (go figure), as you need to change the XML declaration
to lower-case.
There is 'working' copy of Hamlet in contrib/src/resources/hamlet.xml
The code used to compute the benchmark does a few things, it measures a number of metrics.
For the parse times it compares 4 input mechanisms, SAX, DOM, and then StAX Stream and StAX event.
For each of the parse tests it:
- pre-loads hamlet.xml in to a char[] array, and then in to a CharArrayReader so there should be no effect of real IO on the time.
- Runs the CharArrayReader through the parser and builds a JDOM Document.
- Runs the data through the parser again, but this time in to a 'bit-bucket' system (not JDOM).
- Substracts the two to get an idea of how much time is spent in the parser, and how much in JDOM.
The following metrics are (currently) produced:
- Input - number of bytes in the input XML files
- Mem - the amount of memory required to load the XML as a JDOM document
- SAX - The SAXBuilder.build() method is timed
- SAXJ - the amount of SAX time in JDOM
- DOM - The DOMBuilder.build() time
- DOMJ - the amount of DOM time in JDOM
- StAXS - The StAXBuilder.build(XMLStreamReader) time
- StAXSJ - the amount ot StAXS timm in JDOM
- StAXE - The StAXBuilder.build(XMLEventReader) time
- StAXEJ - the amount ot StAXE time in JDOM
- Scan - It measures how long it takes to do a simple, and then an Element-Filtered
DescendantIterator 'walk' of the document tree.
- Dump - It measures how long it takes to output the document to a 'bitbucket'
in the three major Format outputs (pretty, compact, raw).
- Dupe - It measures how long it takes to recursively 'duplicate' the document
by using a 'brute-force' mechanism which uses the 'new' constructors for
the content. See the code for what it does.
- XPath - It measures how long it takes to do two XPath operations, one that selects
all attributes with a non-existing name (expect no results). The other
selects all Elements.
- Checked - It measures how long it takes to send the document back through the
SAXOutputter/SAXHandler using the DefaultJDOMFactory
- UnChecked - It measures how long it takes to send the document back through the
SAXOutputter/SAXHandler using the UncheckedJDOMFactory
JDOM 2 Results
JDOM 2.0.6 (Release) run with Java7u75
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 3.88ms | 1.61ms | 5.47ms | 2.08ms | 3.65ms | 1.07ms | 6.62ms | 2.43ms | 1.18ms | 12.36ms | 4.80ms | 27.82ms | 6.19ms | 5.94ms |
273.14KiB | 1.97MiB | 3.84ms | 1.47ms | 5.35ms | 1.88ms | 3.33ms | 0.49ms | 7.28ms | 2.45ms | 1.31ms | 10.39ms | 4.92ms | 28.97ms | 6.40ms | 5.93ms |
273.14KiB | 1.97MiB | 3.67ms | 1.28ms | 5.46ms | 1.96ms | 3.76ms | 0.88ms | 7.07ms | 2.86ms | 1.22ms | 10.12ms | 4.81ms | 28.17ms | 6.85ms | 6.52ms |
273.14KiB | 1.97MiB | 3.57ms | 0.90ms | 5.41ms | 2.07ms | 3.28ms | 0.74ms | 6.60ms | 2.38ms | 1.24ms | 10.28ms | 5.04ms | 28.65ms | 6.20ms | 5.75ms |
273.14KiB | 1.97MiB | 3.59ms | 1.38ms | 5.74ms | 2.31ms | 3.50ms | 0.97ms | 7.02ms | 2.73ms | 1.26ms | 10.19ms | 4.98ms | 29.98ms | 6.28ms | 5.95ms |
JDOM PRE-2.0.6 run with Java8u31
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 3.94ms | 1.77ms | 5.13ms | 1.88ms | 3.30ms | 0.91ms | 6.13ms | 1.88ms | 1.24ms | 9.48ms | 4.99ms | 28.46ms | 6.08ms | 5.48ms |
273.14KiB | 1.97MiB | 3.64ms | 1.48ms | 5.08ms | 1.71ms | 3.28ms | 0.93ms | 6.09ms | 2.07ms | 1.28ms | 9.51ms | 4.84ms | 27.92ms | 6.15ms | 5.57ms |
273.14KiB | 1.97MiB | 3.93ms | 1.37ms | 5.30ms | 2.01ms | 3.32ms | 0.87ms | 6.00ms | 2.13ms | 1.17ms | 9.43ms | 4.90ms | 27.90ms | 6.18ms | 6.77ms |
273.14KiB | 1.97MiB | 3.39ms | 1.17ms | 5.32ms | 2.09ms | 3.27ms | 0.73ms | 6.14ms | 2.28ms | 1.21ms | 10.39ms | 4.84ms | 30.51ms | 8.27ms | 5.54ms |
273.14KiB | 1.97MiB | 3.25ms | 1.09ms | 5.17ms | 2.05ms | 3.31ms | 1.02ms | 6.06ms | 2.18ms | 1.21ms | 9.19ms | 4.74ms | 29.06ms | 6.07ms | 5.41ms |
JDOM PRE-2.0.6 run with Java7u21
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 3.64ms | 1.29ms | 6.52ms | 2.95ms | 3.63ms | 1.16ms | 7.07ms | 2.70ms | 1.22ms | 12.76ms | 4.83ms | 29.25ms | 6.65ms | 5.76ms |
273.14KiB | 1.97MiB | 4.33ms | 1.99ms | 5.78ms | 2.26ms | 3.48ms | 0.80ms | 6.87ms | 2.52ms | 1.64ms | 10.01ms | 4.84ms | 28.53ms | 6.28ms | 5.79ms |
273.14KiB | 1.97MiB | 3.72ms | 1.40ms | 5.69ms | 2.24ms | 3.41ms | 0.97ms | 6.81ms | 2.43ms | 1.35ms | 10.30ms | 4.76ms | 29.08ms | 6.39ms | 5.78ms |
273.14KiB | 1.97MiB | 3.57ms | 1.29ms | 5.64ms | 2.18ms | 3.39ms | 0.96ms | 6.96ms | 2.58ms | 1.52ms | 10.28ms | 4.74ms | 29.05ms | 6.34ms | 5.78ms |
273.14KiB | 1.97MiB | 3.58ms | 1.27ms | 5.57ms | 2.12ms | 3.51ms | 1.14ms | 6.76ms | 2.20ms | 1.65ms | 10.14ms | 4.84ms | 28.46ms | 6.29ms | 5.73ms |
RE BASELINE
JDOM 2.0.5 run with Java7u21 on a new laptop - much faster.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 4.11ms | 1.24ms | 5.77ms | 0.82ms | 3.44ms | 0.58ms | 8.12ms | 1.69ms | 1.43ms | 13.28ms | 6.29ms | 33.67ms | 6.82ms | 7.44ms |
273.14KiB | 1.97MiB | 3.92ms | 0.77ms | 6.18ms | 2.03ms | 3.94ms | 0.25ms | 8.12ms | 2.86ms | 1.45ms | 12.29ms | 5.01ms | 29.84ms | 8.91ms | 6.61ms |
273.14KiB | 1.97MiB | 4.58ms | 1.63ms | 6.58ms | 2.22ms | 4.63ms | 1.75ms | 7.05ms | 2.14ms | 1.45ms | 12.44ms | 5.55ms | 32.19ms | 6.91ms | 6.88ms |
273.14KiB | 1.97MiB | 3.87ms | 0.28ms | 5.82ms | 2.24ms | 3.51ms | 0.75ms | 7.68ms | 2.77ms | 1.88ms | 11.68ms | 5.67ms | 31.18ms | 6.43ms | 5.78ms |
273.14KiB | 1.97MiB | 5.48ms | 3.06ms | 6.24ms | 2.57ms | 4.33ms | 1.84ms | 7.32ms | 0.67ms | 1.51ms | 11.10ms | 4.92ms | 33.44ms | 8.05ms | 8.30ms |
Preparing for JDOM 2.0.6
JDOM 2.0.5 - run with Java7u7
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 5.22ms | 1.43ms | 9.90ms | 3.82ms | 6.01ms | 2.26ms | 9.73ms | 2.86ms | 1.54ms | 14.42ms | 7.36ms | 36.02ms | 9.26ms | 7.81ms |
273.14KiB | 1.97MiB | 6.65ms | 3.11ms | 8.18ms | 2.61ms | 5.60ms | 1.62ms | 10.18ms | 3.76ms | 1.75ms | 15.07ms | 7.20ms | 34.17ms | 11.07ms | 7.84ms |
273.14KiB | 1.97MiB | 5.30ms | 1.37ms | 7.21ms | 2.04ms | 6.09ms | 2.12ms | 8.75ms | 1.94ms | 1.88ms | 14.03ms | 7.32ms | 37.78ms | 9.06ms | 7.60ms |
273.14KiB | 1.97MiB | 5.27ms | 2.09ms | 7.00ms | 2.06ms | 5.61ms | 1.91ms | 9.18ms | 2.64ms | 1.94ms | 17.15ms | 8.14ms | 34.80ms | 8.79ms | 7.72ms |
273.14KiB | 1.97MiB | 4.72ms | 1.36ms | 7.41ms | 2.34ms | 5.24ms | 0.94ms | 12.10ms | 5.35ms | 1.82ms | 14.31ms | 6.24ms | 37.43ms | 9.30ms | 7.99ms |
JDOM 2.0.4 - Run with Java7u7
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 5.48ms | 1.49ms | 8.19ms | 1.82ms | 5.74ms | 1.90ms | 11.35ms | 3.77ms | 1.89ms | 13.87ms | 7.25ms | 35.58ms | 9.53ms | 7.64ms |
273.14KiB | 1.97MiB | 5.49ms | 1.59ms | 8.62ms | 2.43ms | 4.97ms | 1.06ms | 9.74ms | 2.72ms | 1.91ms | 14.02ms | 7.41ms | 35.27ms | 9.90ms | 7.71ms |
273.14KiB | 1.97MiB | 6.15ms | 2.58ms | 8.01ms | 2.76ms | 5.53ms | 1.37ms | 10.36ms | 3.02ms | 1.90ms | 13.91ms | 6.31ms | 35.26ms | 9.08ms | 7.60ms |
273.14KiB | 1.97MiB | 5.09ms | 1.54ms | 7.64ms | 2.45ms | 5.85ms | 2.07ms | 11.64ms | 5.00ms | 1.66ms | 13.55ms | 6.57ms | 34.20ms | 9.29ms | 7.75ms |
273.14KiB | 1.97MiB | 5.82ms | 2.18ms | 7.87ms | 2.87ms | 5.84ms | 2.03ms | 10.10ms | 3.16ms | 1.81ms | 14.39ms | 6.65ms | 35.84ms | 9.01ms | 7.67ms |
JDOM 2.0.3 - Identical code to previous test, but run with Java7u7 instead of Java7u0 (Code is compiled with Java6, but run with different Java7 JREs)
Note that Update7 seems slightly slower on everything, but uses less memory for Java objects.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.97MiB | 5.52ms | 1.42ms | 7.99ms | 1.79ms | 5.76ms | 1.22ms | 9.24ms | 2.34ms | 1.75ms | 14.25ms | 7.51ms | 35.22ms | 8.37ms | 7.27ms |
273.14KiB | 1.97MiB | 6.04ms | 1.93ms | 8.51ms | 2.64ms | 5.36ms | 1.59ms | 9.52ms | 2.91ms | 1.91ms | 13.10ms | 7.96ms | 36.89ms | 9.16ms | 7.64ms |
273.14KiB | 1.97MiB | 5.13ms | 1.07ms | 7.64ms | 1.66ms | 5.49ms | 1.53ms | 9.87ms | 3.18ms | 1.91ms | 13.58ms | 7.07ms | 35.82ms | 9.36ms | 7.92ms |
273.14KiB | 1.97MiB | 5.19ms | 1.43ms | 7.57ms | 1.88ms | 5.81ms | 1.30ms | 11.69ms | 4.43ms | 1.71ms | 15.15ms | 6.69ms | 36.27ms | 8.62ms | 8.23ms |
273.14KiB | 1.97MiB | 5.58ms | 1.70ms | 7.71ms | 2.62ms | 5.42ms | 0.98ms | 9.44ms | 2.90ms | 1.89ms | 14.58ms | 6.89ms | 36.33ms | 8.82ms | 7.85ms |
JDOM 2.0.3 - ContentList and Verifier performance fixes (not particularly visible in these benchmarks which are too broad).
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.07ms | 1.47ms | 7.82ms | 1.95ms | 5.53ms | 1.89ms | 9.01ms | 2.99ms | 1.76ms | 13.22ms | 6.96ms | 34.19ms | 8.62ms | 7.45ms |
273.14KiB | 2.07MiB | 5.51ms | 1.40ms | 8.65ms | 2.92ms | 5.13ms | 1.11ms | 9.13ms | 3.24ms | 1.71ms | 13.13ms | 6.55ms | 34.13ms | 8.88ms | 7.68ms |
273.14KiB | 2.07MiB | 5.10ms | 1.34ms | 7.59ms | 2.61ms | 4.93ms | 1.42ms | 8.70ms | 2.84ms | 1.67ms | 13.36ms | 6.82ms | 32.30ms | 8.53ms | 7.60ms |
273.14KiB | 2.07MiB | 4.93ms | 1.82ms | 7.54ms | 2.44ms | 5.01ms | 1.60ms | 9.14ms | 3.48ms | 1.66ms | 13.36ms | 6.42ms | 34.56ms | 8.20ms | 7.34ms |
273.14KiB | 2.07MiB | 5.30ms | 1.98ms | 7.83ms | 3.01ms | 5.18ms | 1.77ms | 8.59ms | 2.67ms | 1.76ms | 12.97ms | 6.88ms | 34.89ms | 8.43ms | 7.67ms |
Pre JDOM 2.0.3 - Various fixes but mostly the BitMasked Verifier - incorporating Canadian Wilf's performance suggestions.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 5.51ms | 2.51ms | 8.19ms | 3.30ms | 5.28ms | 1.60ms | 8.71ms | 2.97ms | 1.75ms | 12.55ms | 7.40ms | 32.00ms | 8.38ms | 7.23ms |
273.14KiB | 2.06MiB | 4.95ms | 1.46ms | 7.34ms | 2.25ms | 5.48ms | 2.16ms | 8.30ms | 2.12ms | 1.64ms | 13.59ms | 6.42ms | 34.06ms | 7.94ms | 7.73ms |
273.14KiB | 2.06MiB | 4.72ms | 0.98ms | 7.28ms | 2.01ms | 4.67ms | 1.45ms | 9.04ms | 3.39ms | 1.76ms | 13.78ms | 6.89ms | 33.85ms | 8.84ms | 7.56ms |
273.14KiB | 2.06MiB | 5.06ms | 1.91ms | 7.96ms | 3.29ms | 4.69ms | 1.48ms | 8.79ms | 3.00ms | 1.69ms | 14.80ms | 6.97ms | 31.52ms | 8.89ms | 7.48ms |
273.14KiB | 2.06MiB | 5.39ms | 2.44ms | 7.94ms | 3.37ms | 5.38ms | 1.24ms | 8.49ms | 2.33ms | 1.77ms | 12.96ms | 6.48ms | 33.30ms | 8.90ms | 7.38ms |
New NodeComparator in Jaxen
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 5.11ms | 1.64ms | 7.03ms | 1.63ms | 4.65ms | 1.20ms | 8.94ms | 2.11ms | 1.75ms | 12.81ms | 7.21ms | 27.42ms | 8.59ms | 7.37ms |
273.14KiB | 2.06MiB | 5.20ms | 1.37ms | 7.29ms | 2.13ms | 4.95ms | 1.22ms | 8.69ms | 1.75ms | 1.71ms | 12.90ms | 7.43ms | 27.84ms | 9.33ms | 7.93ms |
273.14KiB | 2.06MiB | 5.61ms | 2.46ms | 7.39ms | 2.51ms | 4.49ms | 1.18ms | 8.84ms | 2.35ms | 1.66ms | 13.25ms | 7.61ms | 29.50ms | 9.66ms | 7.34ms |
273.14KiB | 2.06MiB | 5.72ms | 2.48ms | 7.93ms | 3.18ms | 4.57ms | 1.14ms | 10.17ms | 3.28ms | 1.75ms | 13.45ms | 7.17ms | 29.37ms | 9.16ms | 7.78ms |
273.14KiB | 2.06MiB | 4.83ms | 1.75ms | 7.57ms | 2.58ms | 4.56ms | 1.11ms | 9.10ms | 2.38ms | 1.74ms | 13.52ms | 7.54ms | 28.39ms | 9.78ms | 7.79ms |
JDOM 2.0.1 - Fix for issue #72 means that the 'Dump' job is doing more work, and is thus slower than before.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 4.97ms | 1.89ms | 7.08ms | 2.09ms | 4.74ms | 1.24ms | 8.22ms | 2.65ms | 1.68ms | 13.02ms | 7.07ms | 31.24ms | 8.55ms | 7.19ms |
273.14KiB | 2.06MiB | 4.74ms | 1.35ms | 7.47ms | 2.66ms | 4.62ms | 1.30ms | 8.21ms | 2.61ms | 1.69ms | 13.12ms | 6.84ms | 31.10ms | 8.56ms | 7.23ms |
273.14KiB | 2.06MiB | 5.11ms | 2.12ms | 7.01ms | 2.56ms | 4.56ms | 1.39ms | 8.03ms | 2.45ms | 1.80ms | 13.00ms | 6.89ms | 31.96ms | 8.57ms | 7.23ms |
273.14KiB | 2.06MiB | 4.82ms | 1.85ms | 6.99ms | 2.52ms | 4.58ms | 1.45ms | 8.34ms | 2.89ms | 1.66ms | 13.00ms | 6.92ms | 32.36ms | 8.59ms | 7.11ms |
273.14KiB | 2.06MiB | 4.67ms | 1.69ms | 7.49ms | 2.97ms | 4.91ms | 1.71ms | 8.09ms | 2.61ms | 1.65ms | 13.00ms | 6.86ms | 32.72ms | 8.82ms | 7.24ms |
JDOM 2.0.0
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.07ms | 1.91ms | 7.67ms | 1.50ms | 5.33ms | 1.32ms | 9.79ms | 3.60ms | 1.74ms | 7.87ms | 7.16ms | 32.23ms | 9.90ms | 7.74ms |
273.14KiB | 2.06MiB | 5.08ms | 1.11ms | 9.21ms | 3.80ms | 5.15ms | 1.51ms | 9.46ms | 2.82ms | 1.78ms | 8.13ms | 7.06ms | 32.37ms | 9.03ms | 7.40ms |
273.14KiB | 2.06MiB | 5.04ms | 1.16ms | 7.64ms | 2.76ms | 4.93ms | 1.39ms | 9.72ms | 3.34ms | 1.72ms | 8.87ms | 6.92ms | 33.26ms | 8.92ms | 7.42ms |
273.14KiB | 2.06MiB | 5.03ms | 1.70ms | 7.71ms | 2.82ms | 5.25ms | 1.94ms | 9.78ms | 3.74ms | 1.75ms | 8.38ms | 7.13ms | 31.54ms | 9.09ms | 8.43ms |
273.14KiB | 2.06MiB | 4.97ms | 1.66ms | 7.88ms | 2.90ms | 5.07ms | 1.49ms | 8.90ms | 2.63ms | 1.80ms | 8.81ms | 7.86ms | 31.77ms | 9.35ms | 7.52ms |
April 1 - BETA 6 - Nothing significant changed for performance
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 6.78ms | 2.76ms | 8.35ms | 2.78ms | 5.04ms | 1.37ms | 9.02ms | 3.15ms | 1.80ms | 8.72ms | 7.81ms | 33.40ms | 8.96ms | 7.57ms |
273.14KiB | 2.06MiB | 5.35ms | 1.50ms | 8.02ms | 2.92ms | 5.00ms | 1.67ms | 8.87ms | 2.93ms | 1.78ms | 7.74ms | 7.50ms | 31.98ms | 9.49ms | 7.98ms |
273.14KiB | 2.06MiB | 5.01ms | 1.59ms | 7.48ms | 2.58ms | 4.76ms | 1.47ms | 8.92ms | 2.73ms | 1.78ms | 7.87ms | 7.40ms | 34.28ms | 9.37ms | 7.98ms |
273.14KiB | 2.06MiB | 5.19ms | 1.73ms | 7.34ms | 2.52ms | 4.89ms | 1.61ms | 8.98ms | 2.89ms | 1.73ms | 8.21ms | 7.85ms | 32.56ms | 9.94ms | 7.84ms |
273.14KiB | 2.06MiB | 4.95ms | 1.65ms | 7.45ms | 2.30ms | 4.95ms | 1.56ms | 8.85ms | 2.99ms | 1.80ms | 8.31ms | 7.71ms | 33.68ms | 9.02ms | 7.63ms |
March 26 - BETA 5 - Number of optimizations
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.02ms | 1.82ms | 8.72ms | 3.00ms | 5.27ms | 1.95ms | 8.29ms | 2.72ms | 1.66ms | 7.54ms | 6.89ms | 33.01ms | 9.02ms | 7.20ms |
273.14KiB | 2.06MiB | 4.99ms | 1.19ms | 7.48ms | 2.66ms | 4.89ms | 1.60ms | 8.25ms | 2.59ms | 1.71ms | 7.44ms | 6.95ms | 31.89ms | 8.53ms | 7.19ms |
273.14KiB | 2.06MiB | 4.76ms | 1.35ms | 7.04ms | 2.62ms | 4.85ms | 1.65ms | 8.96ms | 3.49ms | 1.71ms | 7.75ms | 7.06ms | 31.94ms | 8.75ms | 7.36ms |
273.14KiB | 2.06MiB | 4.78ms | 1.78ms | 7.15ms | 2.56ms | 4.81ms | 1.60ms | 8.33ms | 2.84ms | 1.65ms | 7.43ms | 6.90ms | 32.38ms | 8.55ms | 7.26ms |
273.14KiB | 2.06MiB | 4.69ms | 1.72ms | 7.21ms | 2.68ms | 4.97ms | 1.73ms | 8.24ms | 2.76ms | 1.65ms | 7.56ms | 6.94ms | 31.49ms | 8.53ms | 7.63ms |
Optimized DescendantIterator
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.24ms | 2.15ms | 7.73ms | 1.88ms | 5.18ms | 1.54ms | 8.62ms | 2.78ms | 2.07ms | 10.79ms | 8.87ms | 32.62ms | 8.94ms | 7.70ms |
273.14KiB | 2.06MiB | 5.26ms | 1.52ms | 8.01ms | 2.72ms | 4.81ms | 1.25ms | 8.55ms | 2.76ms | 1.69ms | 8.69ms | 7.19ms | 31.75ms | 9.15ms | 8.40ms |
273.14KiB | 2.06MiB | 5.16ms | 1.51ms | 7.50ms | 2.75ms | 4.88ms | 1.40ms | 9.01ms | 3.38ms | 1.71ms | 8.24ms | 7.19ms | 32.89ms | 9.96ms | 7.80ms |
273.14KiB | 2.06MiB | 4.98ms | 1.76ms | 7.49ms | 2.68ms | 4.60ms | 1.06ms | 8.75ms | 2.62ms | 1.73ms | 8.18ms | 7.45ms | 32.54ms | 9.80ms | 8.00ms |
273.14KiB | 2.06MiB | 5.35ms | 2.31ms | 7.85ms | 3.04ms | 4.98ms | 1.65ms | 8.68ms | 2.92ms | 1.68ms | 8.23ms | 7.74ms | 31.02ms | 9.63ms | 7.75ms |
Optimized Indent calculation on FormatStack, and Text/CDATA improvements in the AbstractFormattedWalker.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 6.40ms | 3.18ms | 7.45ms | 1.96ms | 5.16ms | 1.66ms | 8.75ms | 3.19ms | 3.11ms | 8.02ms | 7.34ms | 31.13ms | 9.11ms | 7.42ms |
273.14KiB | 2.06MiB | 4.97ms | 1.47ms | 7.63ms | 2.83ms | 5.49ms | 1.73ms | 8.61ms | 2.79ms | 3.13ms | 7.84ms | 7.35ms | 29.99ms | 9.26ms | 7.36ms |
273.14KiB | 2.06MiB | 4.79ms | 1.23ms | 7.50ms | 2.87ms | 4.93ms | 1.78ms | 8.56ms | 2.75ms | 3.12ms | 7.84ms | 7.62ms | 30.98ms | 9.37ms | 7.39ms |
273.14KiB | 2.06MiB | 5.19ms | 2.11ms | 7.16ms | 2.66ms | 4.79ms | 1.45ms | 8.97ms | 3.34ms | 3.01ms | 8.25ms | 7.37ms | 30.68ms | 9.11ms | 7.55ms |
273.14KiB | 2.06MiB | 4.80ms | 1.68ms | 7.41ms | 2.73ms | 4.93ms | 1.47ms | 9.65ms | 3.70ms | 3.04ms | 8.15ms | 7.43ms | 29.68ms | 9.62ms | 7.61ms |
Format sub classes.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 6.57ms | 3.14ms | 7.62ms | 2.04ms | 5.48ms | 1.78ms | 9.84ms | 3.24ms | 3.07ms | 9.99ms | 7.50ms | 30.77ms | 9.19ms | 7.72ms |
273.14KiB | 2.06MiB | 5.46ms | 1.58ms | 8.55ms | 3.35ms | 5.30ms | 1.81ms | 9.39ms | 2.98ms | 3.15ms | 10.21ms | 8.32ms | 31.29ms | 9.53ms | 8.22ms |
273.14KiB | 2.06MiB | 5.24ms | 1.68ms | 7.60ms | 2.50ms | 5.63ms | 2.18ms | 8.90ms | 2.63ms | 3.03ms | 9.49ms | 8.39ms | 30.87ms | 9.73ms | 8.11ms |
273.14KiB | 2.06MiB | 4.94ms | 1.59ms | 7.58ms | 2.96ms | 5.02ms | 1.32ms | 9.03ms | 2.65ms | 3.39ms | 9.51ms | 7.79ms | 29.11ms | 9.54ms | 7.49ms |
273.14KiB | 2.06MiB | 4.79ms | 1.61ms | 7.38ms | 2.66ms | 4.88ms | 1.68ms | 9.30ms | 3.20ms | 3.21ms | 9.73ms | 7.60ms | 29.13ms | 9.65ms | 7.90ms |
FastText in Walker
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.60ms | 2.05ms | 7.18ms | 1.60ms | 5.19ms | 1.70ms | 8.38ms | 2.32ms | 3.13ms | 9.88ms | 7.24ms | 29.08ms | 9.53ms | 7.76ms |
273.14KiB | 2.06MiB | 5.61ms | 1.79ms | 7.94ms | 2.70ms | 4.79ms | 1.04ms | 8.84ms | 3.14ms | 3.14ms | 9.59ms | 7.75ms | 29.48ms | 10.08ms | 7.32ms |
273.14KiB | 2.06MiB | 5.32ms | 1.42ms | 7.11ms | 2.18ms | 5.34ms | 1.85ms | 8.50ms | 2.46ms | 3.12ms | 9.31ms | 7.58ms | 29.13ms | 9.55ms | 7.70ms |
273.14KiB | 2.06MiB | 5.69ms | 2.17ms | 8.26ms | 3.09ms | 5.04ms | 1.81ms | 8.74ms | 2.46ms | 3.14ms | 10.32ms | 7.11ms | 30.05ms | 9.29ms | 7.51ms |
273.14KiB | 2.06MiB | 5.28ms | 1.73ms | 7.51ms | 2.44ms | 5.12ms | 1.20ms | 8.24ms | 2.54ms | 3.27ms | 9.32ms | 7.82ms | 28.84ms | 9.27ms | 7.91ms |
Faster DescendantIterator
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.25ms | 2.00ms | 7.46ms | 2.05ms | 5.10ms | 1.58ms | 8.74ms | 2.66ms | 3.19ms | 10.53ms | 7.24ms | 29.51ms | 9.51ms | 7.59ms |
273.14KiB | 2.06MiB | 5.12ms | 1.58ms | 8.70ms | 3.52ms | 5.34ms | 1.55ms | 8.92ms | 3.25ms | 3.24ms | 11.55ms | 7.47ms | 31.85ms | 9.77ms | 7.42ms |
273.14KiB | 2.06MiB | 5.28ms | 1.89ms | 7.15ms | 2.01ms | 5.06ms | 1.69ms | 8.74ms | 3.23ms | 3.09ms | 10.56ms | 7.75ms | 30.07ms | 9.02ms | 7.73ms |
273.14KiB | 2.06MiB | 4.63ms | 1.56ms | 7.41ms | 2.48ms | 4.93ms | 1.55ms | 9.58ms | 4.09ms | 3.09ms | 10.57ms | 7.37ms | 28.81ms | 9.41ms | 7.72ms |
273.14KiB | 2.06MiB | 4.98ms | 1.87ms | 7.89ms | 3.37ms | 4.87ms | 1.46ms | 8.33ms | 2.51ms | 3.11ms | 10.84ms | 6.85ms | 31.15ms | 9.05ms | 7.53ms |
Faster Formatter
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.07MiB | 5.53ms | 2.26ms | 7.27ms | 1.87ms | 4.54ms | 0.97ms | 9.04ms | 3.04ms | 3.36ms | 11.22ms | 7.81ms | 29.10ms | 9.32ms | 7.93ms |
273.14KiB | 2.06MiB | 5.20ms | 1.74ms | 8.27ms | 2.72ms | 5.01ms | 1.34ms | 9.45ms | 3.48ms | 3.41ms | 11.63ms | 7.68ms | 30.51ms | 9.08ms | 8.08ms |
273.14KiB | 2.06MiB | 5.04ms | 1.29ms | 7.58ms | 2.62ms | 4.87ms | 1.28ms | 8.64ms | 2.77ms | 3.35ms | 11.14ms | 7.52ms | 30.27ms | 9.40ms | 8.13ms |
273.14KiB | 2.06MiB | 5.02ms | 1.63ms | 7.62ms | 2.84ms | 4.87ms | 1.47ms | 8.58ms | 2.73ms | 3.38ms | 10.52ms | 7.52ms | 31.11ms | 9.57ms | 7.81ms |
273.14KiB | 2.06MiB | 5.02ms | 1.90ms | 7.86ms | 2.89ms | 4.87ms | 1.48ms | 9.39ms | 3.67ms | 3.20ms | 10.81ms | 7.60ms | 29.37ms | 9.26ms | 8.33ms |
March 16 - BETA 4 - Reorganized StAX, Iterator/Iterable getDescendants(), minor changes.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 5.24ms | 1.88ms | 8.09ms | 2.82ms | 5.38ms | 1.61ms | 9.48ms | 3.17ms | 3.31ms | 15.00ms | 9.44ms | 29.68ms | 11.96ms | 9.57ms |
273.14KiB | 2.06MiB | 5.17ms | 1.35ms | 7.95ms | 1.73ms | 5.53ms | 1.77ms | 9.73ms | 3.70ms | 3.62ms | 14.95ms | 9.92ms | 29.98ms | 10.87ms | 9.83ms |
273.14KiB | 2.06MiB | 5.08ms | 1.86ms | 8.10ms | 3.46ms | 5.04ms | 1.24ms | 8.62ms | 3.06ms | 3.55ms | 14.70ms | 9.44ms | 29.51ms | 12.68ms | 9.72ms |
273.14KiB | 2.06MiB | 4.85ms | 1.34ms | 7.46ms | 2.47ms | 5.02ms | 1.18ms | 8.87ms | 2.17ms | 3.47ms | 15.65ms | 10.00ms | 29.41ms | 11.09ms | 9.62ms |
273.14KiB | 2.06MiB | 4.83ms | 1.24ms | 8.04ms | 3.01ms | 4.71ms | 1.20ms | 8.42ms | 2.28ms | 3.51ms | 14.86ms | 9.73ms | 29.54ms | 11.48ms | 10.27ms |
March 12 - BETA 3 - Attribute Specified, TextHelper and Attribute Sorter moved to core from Contrib.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 4.93ms | 1.63ms | 7.30ms | 2.17ms | 4.95ms | 1.50ms | 9.01ms | 3.11ms | 3.11ms | 14.43ms | 9.40ms | 30.71ms | 10.76ms | 9.47ms |
273.14KiB | 2.06MiB | 5.08ms | 1.46ms | 7.23ms | 2.35ms | 5.19ms | 1.47ms | 8.68ms | 2.93ms | 3.26ms | 14.70ms | 9.94ms | 30.57ms | 11.65ms | 10.01ms |
273.14KiB | 2.06MiB | 5.00ms | 1.73ms | 7.87ms | 3.11ms | 4.95ms | 1.70ms | 8.89ms | 2.75ms | 3.49ms | 14.28ms | 9.36ms | 29.50ms | 11.38ms | 9.78ms |
273.14KiB | 2.06MiB | 5.03ms | 1.74ms | 7.66ms | 3.09ms | 5.85ms | 2.53ms | 9.17ms | 3.45ms | 3.18ms | 15.65ms | 9.09ms | 31.47ms | 11.08ms | 9.28ms |
273.14KiB | 2.06MiB | 4.81ms | 1.56ms | 7.53ms | 2.83ms | 4.76ms | 1.54ms | 8.38ms | 2.19ms | 3.30ms | 14.38ms | 9.13ms | 29.96ms | 10.95ms | 9.31ms |
Leap-Day BETA 2 release - includes location-tracking in the SAXHandler
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 5.27ms | 1.75ms | 8.01ms | 2.18ms | 5.11ms | 1.34ms | 9.98ms | 3.16ms | 3.22ms | 14.04ms | 9.66ms | 29.39ms | 11.11ms | 10.42ms |
273.14KiB | 2.06MiB | 4.95ms | 1.08ms | 7.75ms | 1.89ms | 4.93ms | 1.01ms | 9.38ms | 2.45ms | 3.45ms | 14.20ms | 9.20ms | 29.21ms | 11.77ms | 10.24ms |
273.14KiB | 2.06MiB | 4.96ms | 1.25ms | 7.31ms | 2.69ms | 4.98ms | 1.37ms | 9.40ms | 3.24ms | 3.45ms | 14.20ms | 9.18ms | 29.18ms | 11.48ms | 9.82ms |
273.14KiB | 2.06MiB | 4.92ms | 1.74ms | 6.91ms | 1.78ms | 4.80ms | 1.32ms | 9.81ms | 2.70ms | 3.58ms | 14.77ms | 9.27ms | 29.01ms | 11.53ms | 9.78ms |
273.14KiB | 2.06MiB | 5.36ms | 1.99ms | 7.58ms | 2.53ms | 4.61ms | 0.84ms | 9.55ms | 3.47ms | 3.46ms | 15.13ms | 9.55ms | 30.98ms | 11.10ms | 10.31ms |
Fixes for XMLText escaping
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 5.01ms | 1.83ms | 7.06ms | 1.96ms | 5.19ms | 1.60ms | 9.09ms | 3.53ms | 3.23ms | 14.32ms | 9.16ms | 31.49ms | 10.84ms | 10.10ms |
273.14KiB | 2.06MiB | 4.86ms | 1.16ms | 7.23ms | 1.68ms | 5.02ms | 1.39ms | 9.41ms | 3.57ms | 3.50ms | 15.21ms | 9.49ms | 29.77ms | 11.03ms | 9.68ms |
273.14KiB | 2.06MiB | 4.73ms | 1.01ms | 7.41ms | 2.42ms | 4.90ms | 1.52ms | 8.63ms | 3.06ms | 3.11ms | 15.76ms | 9.32ms | 30.31ms | 10.74ms | 9.50ms |
273.14KiB | 2.06MiB | 4.64ms | 1.42ms | 7.44ms | 2.66ms | 5.35ms | 1.64ms | 9.20ms | 3.62ms | 3.06ms | 14.34ms | 9.71ms | 29.80ms | 11.11ms | 10.36ms |
273.14KiB | 2.06MiB | 4.69ms | 1.68ms | 7.02ms | 2.40ms | 5.10ms | 1.74ms | 9.20ms | 3.55ms | 3.15ms | 13.84ms | 9.96ms | 29.41ms | 11.74ms | 9.95ms |
SAX String-intern and Lazy Attributes
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 6.01ms | 2.83ms | 7.29ms | 2.34ms | 5.24ms | 1.90ms | 8.55ms | 2.77ms | 3.14ms | 13.08ms | 9.78ms | 30.18ms | 11.28ms | 9.89ms |
273.14KiB | 2.06MiB | 6.10ms | 2.36ms | 7.31ms | 2.17ms | 5.10ms | 0.82ms | 9.99ms | 4.00ms | 3.15ms | 12.75ms | 9.78ms | 30.13ms | 11.41ms | 9.94ms |
273.14KiB | 2.06MiB | 6.36ms | 3.22ms | 7.55ms | 3.00ms | 5.03ms | 1.71ms | 8.52ms | 2.94ms | 3.15ms | 14.12ms | 9.67ms | 31.15ms | 12.02ms | 10.84ms |
273.14KiB | 2.06MiB | 5.95ms | 2.82ms | 7.22ms | 2.58ms | 4.96ms | 1.23ms | 9.49ms | 3.90ms | 3.45ms | 13.33ms | 9.77ms | 29.96ms | 11.70ms | 9.97ms |
273.14KiB | 2.06MiB | 5.97ms | 2.69ms | 7.37ms | 2.79ms | 4.61ms | 1.43ms | 8.71ms | 3.08ms | 3.24ms | 12.59ms | 9.74ms | 29.80ms | 11.34ms | 9.81ms |
Lazy AttributeList and smart AdditionalNamespace checking too.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 4.58ms | 1.62ms | 6.91ms | 2.11ms | 4.59ms | 1.26ms | 8.30ms | 2.79ms | 3.11ms | 12.61ms | 9.36ms | 29.12ms | 11.08ms | 9.67ms |
273.14KiB | 2.06MiB | 4.67ms | 1.30ms | 7.26ms | 2.69ms | 4.34ms | 0.77ms | 8.35ms | 2.71ms | 3.11ms | 12.28ms | 10.51ms | 29.17ms | 11.32ms | 9.93ms |
273.14KiB | 2.06MiB | 4.42ms | 1.06ms | 7.19ms | 2.75ms | 4.50ms | 1.08ms | 8.95ms | 3.08ms | 3.11ms | 12.01ms | 9.44ms | 29.36ms | 11.50ms | 9.76ms |
273.14KiB | 2.06MiB | 4.67ms | 1.68ms | 6.84ms | 2.45ms | 4.44ms | 1.07ms | 8.47ms | 2.96ms | 3.17ms | 12.25ms | 9.47ms | 29.57ms | 11.48ms | 9.71ms |
273.14KiB | 2.06MiB | 4.50ms | 1.49ms | 6.91ms | 2.51ms | 4.40ms | 1.12ms | 8.28ms | 2.80ms | 3.06ms | 12.13ms | 10.01ms | 29.23ms | 11.50ms | 9.68ms |
Both SlimJDOMFactory and Lazy AttributeList
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.57MiB | 8.02ms | 5.03ms | 7.26ms | 2.10ms | 4.84ms | 1.59ms | 8.25ms | 2.74ms | 2.97ms | 12.03ms | 9.31ms | 28.70ms | 11.20ms | 9.93ms |
273.14KiB | 1.57MiB | 8.28ms | 5.02ms | 7.06ms | 2.28ms | 4.55ms | 1.11ms | 8.25ms | 2.70ms | 2.90ms | 11.93ms | 9.77ms | 28.73ms | 11.32ms | 9.96ms |
273.14KiB | 1.57MiB | 7.90ms | 4.61ms | 6.89ms | 2.35ms | 4.57ms | 1.25ms | 8.31ms | 2.78ms | 2.94ms | 12.46ms | 9.55ms | 29.30ms | 11.69ms | 9.80ms |
273.14KiB | 1.57MiB | 7.96ms | 5.05ms | 6.94ms | 2.44ms | 4.57ms | 1.13ms | 9.49ms | 3.80ms | 3.00ms | 12.19ms | 9.37ms | 30.65ms | 11.22ms | 9.69ms |
273.14KiB | 1.57MiB | 7.74ms | 4.84ms | 7.26ms | 2.55ms | 4.72ms | 1.54ms | 8.28ms | 2.04ms | 3.02ms | 11.97ms | 9.60ms | 28.81ms | 11.38ms | 9.79ms |
Lazy AttributeList
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.06MiB | 4.56ms | 1.58ms | 6.86ms | 2.05ms | 5.14ms | 1.59ms | 9.08ms | 3.14ms | 3.11ms | 12.85ms | 9.79ms | 30.04ms | 13.41ms | 9.78ms |
273.14KiB | 2.06MiB | 4.58ms | 0.78ms | 7.40ms | 2.00ms | 4.74ms | 1.41ms | 8.27ms | 2.74ms | 3.10ms | 12.57ms | 9.69ms | 30.01ms | 11.52ms | 9.94ms |
273.14KiB | 2.06MiB | 4.50ms | 1.17ms | 6.96ms | 2.52ms | 5.07ms | 1.86ms | 9.25ms | 3.74ms | 3.11ms | 12.58ms | 10.08ms | 30.14ms | 11.29ms | 9.87ms |
273.14KiB | 2.06MiB | 4.49ms | 1.30ms | 6.73ms | 2.33ms | 4.86ms | 1.17ms | 8.35ms | 2.82ms | 3.49ms | 12.41ms | 9.71ms | 30.05ms | 11.52ms | 9.83ms |
273.14KiB | 2.06MiB | 4.60ms | 1.66ms | 6.90ms | 2.32ms | 4.70ms | 1.45ms | 8.25ms | 2.71ms | 3.10ms | 12.49ms | 9.54ms | 30.87ms | 12.33ms | 11.12ms |
SlimJDOMFactory
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 1.77MiB | 8.49ms | 5.26ms | 7.04ms | 2.20ms | 5.05ms | 1.72ms | 8.30ms | 2.59ms | 2.96ms | 12.36ms | 9.84ms | 29.84ms | 11.73ms | 10.17ms |
273.14KiB | 1.77MiB | 8.41ms | 5.02ms | 6.94ms | 2.06ms | 4.81ms | 1.09ms | 8.38ms | 2.69ms | 3.15ms | 12.40ms | 9.86ms | 29.80ms | 11.68ms | 10.23ms |
273.14KiB | 1.77MiB | 8.66ms | 5.56ms | 6.96ms | 2.42ms | 4.53ms | 1.12ms | 8.14ms | 1.90ms | 2.95ms | 12.48ms | 10.05ms | 29.79ms | 11.74ms | 10.40ms |
273.14KiB | 1.77MiB | 8.33ms | 4.89ms | 7.11ms | 2.63ms | 5.25ms | 1.51ms | 8.12ms | 2.58ms | 2.97ms | 12.80ms | 9.88ms | 29.62ms | 11.73ms | 10.22ms |
273.14KiB | 1.77MiB | 9.01ms | 6.04ms | 7.34ms | 2.79ms | 4.57ms | 1.32ms | 8.07ms | 2.51ms | 3.08ms | 12.35ms | 9.90ms | 30.58ms | 11.95ms | 10.19ms |
Change New XPath API.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 4.82ms | 1.76ms | 7.30ms | 2.40ms | 5.93ms | 2.38ms | 8.72ms | 2.54ms | 3.35ms | 12.95ms | 10.91ms | 31.29ms | 12.69ms | 10.51ms |
273.14KiB | 2.27MiB | 4.70ms | 1.45ms | 7.69ms | 2.32ms | 5.00ms | 1.16ms | 9.30ms | 3.21ms | 3.11ms | 13.07ms | 10.44ms | 30.68ms | 12.30ms | 10.16ms |
273.14KiB | 2.27MiB | 4.62ms | 1.14ms | 7.18ms | 2.76ms | 4.86ms | 1.43ms | 8.26ms | 2.75ms | 3.53ms | 13.01ms | 11.09ms | 28.99ms | 12.42ms | 10.16ms |
273.14KiB | 2.27MiB | 4.47ms | 1.24ms | 7.03ms | 2.47ms | 4.57ms | 0.83ms | 8.47ms | 2.92ms | 3.25ms | 14.39ms | 10.04ms | 29.25ms | 11.82ms | 10.32ms |
273.14KiB | 2.27MiB | 5.19ms | 2.02ms | 7.48ms | 2.84ms | 4.59ms | 1.32ms | 8.67ms | 3.21ms | 3.21ms | 12.79ms | 11.01ms | 29.29ms | 11.97ms | 10.09ms |
Formatting on all Outputters, and all outputters use new Walker concept for text formatting.
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 4.68ms | 1.62ms | 7.37ms | 2.21ms | 4.79ms | 1.46ms | 9.13ms | 3.60ms | 3.22ms | 13.46ms | 10.11ms | 30.61ms | 12.03ms | 10.95ms |
273.14KiB | 2.27MiB | 4.87ms | 1.29ms | 7.10ms | 2.32ms | 4.43ms | 0.77ms | 8.31ms | 2.77ms | 3.38ms | 13.02ms | 10.38ms | 30.66ms | 12.65ms | 10.71ms |
273.14KiB | 2.27MiB | 4.65ms | 1.22ms | 7.18ms | 2.49ms | 4.36ms | 0.96ms | 8.19ms | 2.73ms | 3.62ms | 13.73ms | 10.97ms | 30.83ms | 11.85ms | 10.55ms |
273.14KiB | 2.27MiB | 4.84ms | 1.77ms | 7.15ms | 2.63ms | 4.52ms | 1.20ms | 8.95ms | 3.23ms | 3.33ms | 13.46ms | 10.97ms | 30.20ms | 12.93ms | 10.73ms |
273.14KiB | 2.27MiB | 5.04ms | 2.03ms | 7.72ms | 3.27ms | 4.25ms | 0.88ms | 9.21ms | 3.65ms | 3.30ms | 13.82ms | 10.50ms | 30.19ms | 12.13ms | 10.82ms |
Updated SAXOutputter and DOMOutputter
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 5.06ms | 1.39ms | 7.58ms | 2.21ms | 4.82ms | 1.25ms | 8.91ms | 2.96ms | 3.21ms | 12.75ms | 9.85ms | 30.64ms | 11.24ms | 10.30ms |
273.14KiB | 2.27MiB | 4.82ms | 0.85ms | 7.34ms | 1.85ms | 5.04ms | 1.11ms | 9.12ms | 3.19ms | 4.46ms | 15.42ms | 10.18ms | 30.52ms | 12.35ms | 10.49ms |
273.14KiB | 2.27MiB | 4.86ms | 1.51ms | 7.57ms | 2.78ms | 5.07ms | 1.58ms | 8.63ms | 2.85ms | 3.27ms | 12.30ms | 9.86ms | 29.85ms | 12.00ms | 11.11ms |
273.14KiB | 2.27MiB | 4.59ms | 1.37ms | 7.16ms | 2.36ms | 4.83ms | 1.49ms | 8.71ms | 2.85ms | 3.29ms | 12.56ms | 9.87ms | 31.85ms | 11.47ms | 9.91ms |
273.14KiB | 2.27MiB | 4.66ms | 1.59ms | 7.76ms | 2.99ms | 4.71ms | 1.34ms | 8.94ms | 3.00ms | 3.44ms | 12.66ms | 10.29ms | 29.70ms | 11.94ms | 10.32ms |
New SAXBuilder
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 4.82ms | 1.84ms | 8.11ms | 3.22ms | 5.89ms | 1.42ms | 9.09ms | 1.59ms | 3.18ms | 12.65ms | 9.79ms | 29.62ms | 11.04ms | 9.61ms |
273.14KiB | 2.27MiB | 4.78ms | 1.29ms | 7.23ms | 2.62ms | 5.50ms | 1.27ms | 9.14ms | 2.62ms | 3.13ms | 12.46ms | 10.24ms | 29.94ms | 11.29ms | 9.68ms |
273.14KiB | 2.27MiB | 4.66ms | 1.44ms | 7.64ms | 3.15ms | 5.43ms | 1.26ms | 9.53ms | 2.93ms | 3.09ms | 12.59ms | 10.36ms | 30.00ms | 11.70ms | 9.52ms |
273.14KiB | 2.27MiB | 4.67ms | 1.60ms | 7.15ms | 2.71ms | 5.46ms | 1.41ms | 8.97ms | 2.48ms | 3.10ms | 12.52ms | 9.65ms | 29.65ms | 11.87ms | 10.12ms |
273.14KiB | 2.27MiB | 4.94ms | 1.98ms | 7.17ms | 2.72ms | 5.40ms | 1.49ms | 8.96ms | 2.20ms | 3.09ms | 12.67ms | 10.72ms | 29.55ms | 11.86ms | 9.50ms |
DefaultJDOMFactory in SAX/SAXJ
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 6.65ms | 3.35ms | 8.36ms | 3.44ms | 5.73ms | 2.06ms | 9.30ms | 2.84ms | 3.17ms | 12.33ms | 10.30ms | 28.97ms | 13.47ms | 10.11ms |
273.14KiB | 2.27MiB | 6.66ms | 2.56ms | 7.34ms | 2.00ms | 4.99ms | 1.71ms | 9.02ms | 3.45ms | 3.09ms | 12.71ms | 9.88ms | 29.98ms | 12.91ms | 9.93ms |
273.14KiB | 2.27MiB | 7.65ms | 4.11ms | 7.64ms | 3.01ms | 4.72ms | 1.46ms | 9.07ms | 3.44ms | 3.21ms | 12.21ms | 10.51ms | 29.87ms | 12.77ms | 9.75ms |
273.14KiB | 2.26MiB | 6.52ms | 3.04ms | 7.09ms | 2.12ms | 4.59ms | 1.17ms | 8.96ms | 2.81ms | 3.25ms | 12.89ms | 9.81ms | 29.58ms | 12.50ms | 9.54ms |
273.14KiB | 2.27MiB | 6.85ms | 3.27ms | 7.38ms | 2.84ms | 4.94ms | 1.41ms | 9.67ms | 3.97ms | 3.33ms | 12.62ms | 10.12ms | 30.47ms | 12.11ms | 9.56ms |
final DefaultJDOMHandler
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 5.30ms | 1.76ms | 6.87ms | 2.24ms | 4.73ms | 1.21ms | 9.11ms | 2.84ms | 3.22ms | 12.54ms | 10.43ms | 30.16ms | 11.83ms | 9.89ms |
273.14KiB | 2.27MiB | 5.25ms | 1.08ms | 7.00ms | 2.06ms | 4.61ms | 0.96ms | 8.81ms | 2.55ms | 3.28ms | 12.07ms | 10.59ms | 29.97ms | 12.40ms | 10.36ms |
273.14KiB | 2.27MiB | 5.60ms | 1.39ms | 7.33ms | 2.58ms | 4.66ms | 1.35ms | 8.76ms | 3.06ms | 3.30ms | 12.59ms | 10.75ms | 29.97ms | 12.30ms | 10.67ms |
273.14KiB | 2.26MiB | 5.10ms | 1.63ms | 7.18ms | 2.43ms | 4.46ms | 0.95ms | 8.45ms | 2.29ms | 3.31ms | 13.10ms | 10.25ms | 29.60ms | 12.44ms | 10.81ms |
273.14KiB | 2.27MiB | 5.03ms | 1.35ms | 7.33ms | 2.75ms | 4.45ms | 0.99ms | 8.69ms | 2.58ms | 3.29ms | 13.38ms | 10.29ms | 29.70ms | 12.47ms | 10.56ms |
Second major performance cycle
- Fix issue in the actual performance tool what included GC time in the 'Parse' time
- Introduce StAX code, and test StAX, SAX, and DOM performance (as well as JDOM time of each)
Input | JDOM | SAX | SAXJ | DOM | DOMJ | StAXS | StAXSJ | StAXE | StAXEJ | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.27MiB | 5.48ms | 1.77ms | 8.08ms | 2.61ms | 5.79ms | 2.01ms | 9.50ms | 3.26ms | 3.55ms | 13.20ms | 10.21ms | 32.19ms | 12.70ms | 10.37ms |
273.14KiB | 2.27MiB | 5.19ms | 0.83ms | 7.67ms | 2.32ms | 5.73ms | 1.82ms | 9.23ms | 3.00ms | 3.09ms | 12.33ms | 9.88ms | 30.70ms | 13.49ms | 10.62ms |
273.14KiB | 2.27MiB | 5.68ms | 1.75ms | 9.22ms | 4.25ms | 4.81ms | 1.30ms | 9.43ms | 2.85ms | 3.58ms | 12.07ms | 10.22ms | 31.11ms | 12.38ms | 10.42ms |
273.14KiB | 2.26MiB | 5.08ms | 1.35ms | 7.39ms | 2.56ms | 5.15ms | 1.40ms | 9.01ms | 2.65ms | 3.23ms | 13.14ms | 10.86ms | 31.55ms | 11.66ms | 10.08ms |
273.14KiB | 2.27MiB | 5.90ms | 2.10ms | 7.80ms | 3.11ms | 5.38ms | 2.11ms | 9.02ms | 2.59ms | 3.26ms | 12.69ms | 10.35ms | 30.54ms | 11.52ms | 10.63ms |
First major performance cycle
- After changing ContentList.iterator()
- After changing AttributeList.iterator()
- After setting AttributeList and ContentList to RandomAccess
- Add NamespaceStack to XMLOutputter and SAXOutputter... see
16e00081b...
for all the performance fix details.
It looks like the fix for Multi-sequential-Text issues is still slowig things down slightly.
- Completely rework the XMLOutputter
d50d6421...
for all the details.
These results actually come from a slightly cleaned-up version:
1e44f724...
Input | JDOM | Parse | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.26MiB | 207.55ms | 3.29ms | 13.04ms | 9.82ms | 75.92ms | 10.57ms | 9.33ms |
273.14KiB | 2.26MiB | 207.72ms | 3.38ms | 12.47ms | 9.34ms | 74.77ms | 10.93ms | 8.42ms |
273.14KiB | 2.26MiB | 208.30ms | 3.38ms | 12.40ms | 9.43ms | 75.60ms | 10.37ms | 9.32ms |
273.14KiB | 2.26MiB | 207.72ms | 3.41ms | 12.40ms | 9.82ms | 73.54ms | 11.03ms | 9.47ms |
273.14KiB | 2.26MiB | 207.10ms | 3.07ms | 14.23ms | 9.39ms | 74.92ms | 10.30ms | 8.85ms |
After changes to ContentList
e270fd04a3
to make the FilterList and FilterListIterator
work correctly on get/set and other issues. The major change here that has
affected the performance is the final methods and parameter values
for the checkIndex and checkPreConditions, I think. In reality, ContentList
is doing additional work because of the new dataModCount variable.
Input | JDOM | Parse | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.26MiB | 209.10ms | 4.67ms | 58.91ms | 24.49ms | 279.07ms | 42.89ms | 39.76ms |
273.14KiB | 2.26MiB | 207.06ms | 5.24ms | 58.39ms | 24.25ms | 267.83ms | 42.23ms | 39.95ms |
273.14KiB | 2.26MiB | 207.10ms | 5.28ms | 57.60ms | 24.16ms | 274.26ms | 41.10ms | 38.83ms |
273.14KiB | 2.26MiB | 207.53ms | 4.78ms | 59.08ms | 24.12ms | 271.91ms | 44.01ms | 40.57ms |
273.14KiB | 2.26MiB | 209.43ms | 4.78ms | 58.64ms | 25.06ms | 280.05ms | 41.80ms | 41.55ms |
Commit
d937b23001 just prior to ContentList changes.
Input | JDOM | Parse | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.26MiB | 209.18ms | 4.91ms | 61.01ms | 25.87ms | 281.87ms | 45.20ms | 41.76ms |
273.14KiB | 2.26MiB | 210.77ms | 5.33ms | 61.24ms | 26.33ms | 279.61ms | 43.63ms | 41.20ms |
273.14KiB | 2.26MiB | 210.33ms | 4.83ms | 62.62ms | 27.07ms | 281.42ms | 44.20ms | 42.00ms |
273.14KiB | 2.26MiB | 210.20ms | 4.93ms | 60.93ms | 25.48ms | 279.78ms | 43.55ms | 43.90ms |
273.14KiB | 2.26MiB | 211.23ms | 4.92ms | 60.77ms | 25.90ms | 281.52ms | 44.44ms | 41.80ms |
Baseline Results - JDOM 1.1.2
Based on JDOM-1.1.2 in a the same Java6 code as below, using the xerces/jaxen jars from JDOM1.1.2
Note, the 'Parse' times are useless measures.
Input | JDOM | Parse | Scan | Dump | Dupe | XPath | Checked | UnChecked |
273.14KiB | 2.26MiB | 212.31ms | 4.68ms | 12.47ms | 8.71ms | 259.47ms | 10.27ms | 8.15ms |
273.14KiB | 2.26MiB | 199.44ms | 4.71ms | 11.57ms | 9.18ms | 260.96ms | 9.96ms | 9.11ms |
273.14KiB | 2.26MiB | 200.48ms | 5.04ms | 11.67ms | 8.64ms | 260.08ms | 9.49ms | 8.14ms |
273.14KiB | 2.26MiB | 199.52ms | 4.68ms | 11.30ms | 8.54ms | 256.91ms | 10.05ms | 8.52ms |
273.14KiB | 2.26MiB | 199.18ms | 4.74ms | 11.27ms | 8.69ms | 259.17ms | 9.90ms | 7.94ms |