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.