XPB4J FAQ
Last Updated: May 30, 2002, covers XPB4J-0.90
General Questions
- What is XPB4J?
- What was your motivation in developing XPB4J?
- What can I do with XPB4J?
- How do I interprete XPB4J Measurements?
- Where do I find more information about XPB4J?
- What are the plans for future evolution of XPB4J?
Running XPB4J
- What is XPB4J?
XPB4J is a Java software to measure and compare performance of XML Processing programs.
XPB4J considers XML operations such as parsing, transformation, validation, encryption/decryption,
custom access/manipulation or any combination of these applied to one or more XML
files and/or byte streams as XML processing.
XPB4J consists of
- Code to carry out certain XML processing tasks.
- Code and script to run the processing tasks and report performance measurements.
- XPB4J Framework to plug code and scripts for any processing.
As of XPB4J-0.90, XPB4J includes code for a specific processing activity, called
XStat Processing, to collect certain statistics on an XML file. Different implementations
of this activity are provided, each to use a different parsing API such as SAX, DOM, JDOM, XmlPull,
DOM4J and XSLT.
- What was your motivation for developing XPB4J?
I wrote XPB4J primarily to
- learn about different XML processing APIs.
- enable myself and my fellow programmers to experiment with different ways of doing the same
processing and understand the trade-offs and hence help us make better design and deployment
choices;
- track evolution of XML processing software with respect to their performance characteristics.
When I released XPB4J-0.80 last October, I got a strong feedback to make it a open source project.
Though I had never setup an open source project, the idea of having my own open source project
seemed quite exciting. So I setup a project at SourceForge.net and familiarized myself with their
tools. But then I got pulled into a number of different activities and XPB4J languished. It was
only during the Memorial day weekend this year ( 2002 ) that I started looking at it again and
resurrected it.
- What can I do with XPB4J?
Depending on what are your current objectives, you can do one or more of the following:
- Go through the XPB4J User Guide and the XPB4J Measurements and learn about XML performance
issues and the relative performance of different XML parsers on XStat Processing.
- Learn about different XML APIs by treating different processing code as sample programs.
- Run it in your environment, with your input data, using your favourite parser implementation
and draw your own conclusions.
- Plug your processing code to XPB4J Framework and measure/compare performance.
- Share your observations with other by posting the results to
XPB4J User Mailing List.
- Extend XPB4J by adding more processing activities and/or enhancing the framework.
Any way you look at it, XPB4J is an useful tool for a Java and XML programmer.
- How do I interprete XPB4J Measurements?
I have failed in my effort to create something useful if you just take the reported
measurements and draw final conclusions about suitability of a particular parsing/processing API
and implementation for your purpose. Application performance is determined by a complex
inter-play of various factors and the objective of XPB4J is to highlight this. Use XPB4J
as a starting point and hopefully, as the base for your own benchmarking exercise but do not
assume that a particular API or implementation will be best for you just because the reported
figures show it the best.
The best way to interprete XPB4J measurements is to use it as a tool to understand the inter-play
of various factors impacting the observed performance and refine the performance by tweaking
your environment.
- Where do I find more information about XPB4J?
Start at the XPB4J Home Page. This should suffice
as a one stop resource center.
If you want to download and play with it, XPB4J User Guide is a good
place to start. When in doubt, look at the Ant script and the source code.
- What are the plans for future evolution of XPB4J?
One thing that bothers me greatly about the current XPB4J release ( XPB4J-0.90 ) is that the
framework is not rich enough to attract developers to use it for benchmarking their processing
code. This certainly needs to be addressed.
Besides this, I would like XPB4J to evolve in areas such as:
- Concurrent execution of operations to measure concurrency support on multi-cpu machines.
- More processing operations: XML schema based validation, data binding,
XML encryption/decryption, XML Digital Signature etc.
- Generator of random XML files as per a specified schema and other desired characteristics.
- Collating performance data from multiple execution runs for presentation.
- Support parsers/transformers written in languages other than Java.