W3C EXI Performance Testing Framework
The W3C Efficient XML Interchange (EXI) Performance Testing Framework is now publicly available for download. This is the testing framework used by the EXI WG to evaluate properties of "binary XML" candidates. Specifically, the framework can be used to measure Processing Efficiency and Compactness, and includes support for in-memory and network testing.
The EXI testing framework is built on top of the Glassfish-community project Japex,
which provides basic functionality for timing, drawing charts and generating XML and HTML reports. The WG has received over a thousand XML documents for testing and has hand picked about 100 ranging over 20 different schemas to be included in the framework. The selection has been done very carefully to ensure having representatives for each of the use cases.
The framework includes drivers for several Java and
C/C++ candidates submitted to the EXI WG. The Java drivers use the SAX
API, the C/C++ drivers use either a SAX-like API or a typed API (data
binding). Writing a driver for a candidate that has not been submitted to the WG should be straightforward using any of the existing candidates (such as JAXP) as a template.
To simplify the creation of new drivers, the EXI testing framework includes additional functionality on top of what is provided by Japex that allows the framework to be executed in memory or over the
network. However, due to the cost associated with the JNI interface in
Java, network support isn't available to C/C++ candidates, so these
candidates can only be tested in memory. Drawing conclusions by
comparing Java candidates vs. C/C++ candidates is non-trivial due to
significant differences in the APIs and the underlying platforms. For
these reasons, we opted for separating the Japex configuration files
to avoid producing reports that mix Java and native drivers.
Drivers for the following candidates are included as part of the framework: ASN.1 BER, ASN.1 PER, Efficient XML, ESXML, Fast Infoset, Libxml2, FXDI, Xebu and Xals. Note that the framework does not include the libraries needed by any of these drivers; see the Release Notes for further information.