• Home
  • News
  • About
  • Technology
  •     >> Library
        >> Arbiter
        >> Reaper
        >> Inquisitor
  • Performance
  • Documentation
  • Standards
  • Contact
  • Harvestman:performance

    Havestman's main focus is on modularity, maintainability, scalability, and ease of use. In addition to these goals the architecture also manages to achieve very high performance standards, making it one of the fastest XML processors available.

    Havestmans XML processor is up to 5 times as fast as MSXML when loading a document, and up too 10 times faster when walking the object model. Its performance is second only to FastXML. Both FastXML and MSXML are Win32 only implementations, Harvestman is platform agnostic.

    It follows that Harvestman is also faster than Apache XML (Xerces) and other Open Source Java implementations due primarily to the speed of C++.

    It should also be noted that unlike FastXML which is a highly performance tuned implementation (some of which is written in Assembler language), Harvestman has not been optimised for performance. These figures are literally hot of the press and would be expected to improove as development stabalises.

    These performance tests are based on the Inside MSXML Performance article.

    Loading an XML document

    The documents are XML versions of;

    • Hamlet by William Shakespere. (274 KB)
    • The entire old Tesatment Bible. (3,743 KB)
    • A Microsoft ADO document. (984 KB)
    • The Microsoft sample Northwind database. (239 KB)
      MSXML FastXML Harvestman
    Sample  Load time (ms)   MB/s   Load time (ms)   MB/s   Load time (ms)   MB/s 
    Hamlet.xml 74.8 3.6 11.8 22.6 20 18.6
    Ado.xml 408.7 2.4 71.3 13.5 71 13.5
    Ot.xml 838.5 4.4 133.3 27.4 220 16.6
    Northwind.xml 52.5 4.4 8.8 26.5 10 23.3
    Mean values 3.7 22.5 18.0

    As you can see Harvestman actually outperforms FastXML on some documents. During the benchmark process Harvestman XML was compiled as a single threaded executable (92 KB) with validation disabled. Turning on XML validation adds approximately 10 ms to the processing time.

    Walking XML object model

    These are the results of walking the complete XML tree via DOM (including all element, attributes and text nodes).

      First time walk Next walks
    Sample  MSXML (ms)   FastXML (ms)   Harvestman (ms)   MSXML (ms)   FastXML (ms)   Harvestman (ms) 
    Hamlet.xml 53.8 13.8 10 42.9 13.8 10
    Ado.xml 187.6 65.1 10 187.1 65.2 10
    Ot.xml 531.9 133.1 40 431.5 133.5 40
    Northwind.xml 28.9 7.2 0 23.2 6.8 0
    Mean values 200.5 58.4 15.0 171.1 54.8 15.0

    The 0 ms time (Northiwind.xml) is not a mistake, these benchmarks were done using a millisecond timmer which is too inacurate to report the fraction of a millisecond that it took Harvestman to walk the object model.

    All benchamarks were performed on a Dell Inspiron 1Ghz Laptop with 256MB of RAM, under Win32.