Today I got a nice comment about “Fast XML DOM” script consumption being more of Ron Hess’s “XmlDom.cls”. That surprised me and I thought why don’t give a try and publish the results.
Benchmarking - Fixture
The most important thing to get benchmarking transparent and easy for everybody to reproduce was to search a decently big XML document to perform operations on. For this I decided to pick any public XML Atom feed, and decided to use it from a google code project feed. Here is the link to this xml.
Apart from that, for first round of bench marking, I picked two other criteria’s for benchmarking both the APIs. These are
- Benchmark#1 - DOM Creation: This operation is pretty heavy as it involves creating DOM structure from a XML string.
- “Benchmark#2 - getElementsByTagName() API Call”: This is pretty popular and nice API to test how well a XML API performs on parsing XML structure to give matching nodes for a name.
- “Benchmark#3 - getElementByTagName() API Call”: This API call is pretty similar to that to the above one. But its performance depends on the way its implemented.
To keep this benchmarking simple and extensive for future a new class “TG_XMLDOM_BenchMarks” has been added to the API. You can check it to see how I am benchmarking.
Benchmark#1 - DOM Creation
INFO|XmlDom.constructor() -> Scripts Used : 4804 ,time consumed : 264 INFO|TG_XmlDom.constructor() -> Scripts Used : 26 ,time consumed : 18
Benchmark#2 - getElementsByTagName API call
INFO|XmlDom.getElementsByTagName() -> Scripts Used : 795 ,time consumed : 28 INFO|TG_XmlDom.getElementsByTagName() -> Scripts Used : 560 ,time consumed : 55
Benchmark#3 - getElementByTagName API call
INFO|XmlDom.getElementByTagName() -> Scripts Used : 798 ,time consumed : 27 INFO|TG_XmlDom.getElementByTagName() -> Scripts Used : 38 ,time consumed : 2
I am glad benchmarking started and resulted well. I will doing more bench marking in coming days. This will give Fast XML DOM users/developers more confidence on the API and will help us figure out more areas for polishing and optimizations.