XML Benchmark Results 10.10.2009
Projects Main Page
Get PDF (better formated)
Benchmark Setup
Hardware
Intel Core Duo E6300 (1.86GHz, 2MB L2 cache)
Fujitsu-Siemens D3217-A, Intel Q965 chipset (ICH8R, 1066 Mhz bus)
4 GB DDR2-800 Memory
Mirroring raid of 2 x Seagate Baracuda 7200.10 ST3500630AS (500GB)
Software
Gentoo Linux 64bit, Single User Mode
Kernel 2.6.25
GNU C Library 2.6.1
GNU C Compiler 4.2.4
Java SE Runtime Environment 1.6.0_07 (64 bit)
XML Toolkits
Expat 2.0.1, Sablotron 1.0.3, Arabica Oct2008
Gnome LibXML 2.7.4, GDome 0.8.1, LibXSLT 1.1.24, XMLSec 1.2.11
Apache Xerces/C++ 3.0.1, Xalan/C++ 1.11 (pre), XML Security/C++ 1.5.1
Apache Xerces/Java 2.9.1, Xalan/Java 2.7.1, XML Security/Java 1.4.2
Trolltech QT 4.5.2
Intel XML Software Suite for C++ 1.2
Intel XML Software Suite for Java 1.2
Oracle XML Developers Kit for C 10.2.0.2.0
Oracle XML Developers Kit for Java 10.2.0.2.0
Mono 2.4.2.37
XML Parsers
AsmXml 1.1
RapidXML 1.13
FAXPP 0.4
VTD-XML 2.6
Parabix, SVN 22.09.2009
DMD 1.041 / Tango 0.99.8
DMD 2.032 / Phobos 2.032
XML Files
RDF - A big RDF document from DMoz.org project describing various web resources. It includes nodes from few namespaces and has constant depth of 3 levels.
XMLGen - Scalable data generator producing very simple XML content: 4 levels of depth, no namespaces, very limited amount of different XML nodes.
XMark - Another scalable data generator provided by XMark Project . It produces XML documents modeling an auction website. The XML have slightly more complicated structure: up to 8 levels of depth, higher variety of XML elements. The namespaces are still not used.
OPCGen - A data generator emulating behavior of OPC XML-DA server . The SOAP messages used in data exchange are generated. Size of some of these messages is scaled by scaling parameter, others are staying constant. The nodes and attributes are belonging to 3 different namespaces. The depth of generated XML is depending on the message type and varies from 1 to 5.
In all benchmarks lower values are better!
Performance Index computation: The time required to process data is measured in all tests. This time, then, is divided by the time required by a reference implementation to accomplish the same task on the same data. The resulting value is called performance index and shown on performance charts below. To prevent poisoning of overall result by a single failed test, the maximal value of the performance index for a single run is limited by 10 (and 15 for DOM parsing benchmark). The libraries from Gnome XML Toolkit (LibXML, LibXSLT, and XMLSec) are used as the reference implementations.
Stream (SAX/PULL) Parsing Benchmark

Random Access (DOM) Parsing Benchmark

Parsing+Processing Benchmark, XMLGen 256KB

Parsing+Processing Benchmark, XMark 4MB

Parsing in Deferred Mode
If deferred Mode is used, Xerces/J and Intel/J postpone creation of most DOM objects until they are requested using DOM API.

Deferred Mode Evaluation, Xerces-J
Parsing vs. Parsing + Processing

Deferred Mode Evaluation, Intel-J
Parsing vs. Parsing + Processing

ASMXML Performance
ASMXML is a very basic parser implemented in pure assembler language.

Benchmark of LibXML Bindings

LibXML Bindings, including cl-libxml

DOM Manipulations Benchmark

XSD Validation Benchmark

XSL Transformation Benchmark

XML Security Benchmark

Memory Usage: Stream Parsing

Memory Usage: DOM Parsing

Memory Usage: Processing 256 KB File
|
|
|
![]() |
Memory Usage: Processing 8 MB File
|
|
|
|
Overall Charts


Compiler Benchmark




Encodings Benchmark
