diff options
Diffstat (limited to 'xsd-examples/cxx/parser/performance/README')
-rw-r--r-- | xsd-examples/cxx/parser/performance/README | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/xsd-examples/cxx/parser/performance/README b/xsd-examples/cxx/parser/performance/README new file mode 100644 index 0000000..eda0b16 --- /dev/null +++ b/xsd-examples/cxx/parser/performance/README @@ -0,0 +1,74 @@ +This example measures the performance of XML parsing in the C++/Parser +mapping. It also shows how to structure your code to achieve the maximum +performance for this operation. + +The example consists of the following files: + +test.xsd + XML Schema which describes the test vocabulary. + +test-50k.xml + Test XML document. + +gen.cxx + Program to generate a test document of desired size. + + To compile and link this program we can use the following commands (replace + 'c++' with your C++ compiler name): + + c++ -c gen.cxx + c++ -o gen gen.o + + To generate the test document execute, for example: + + ./gen 633 test-100k.xml + +time.hxx +time.cxx + Class definition that represents time. + +test-pskel.hxx +test-pskel.ixx +test-pskel.cxx + Parser skeletons generated by the XSD compiler from test.xsd using the + following command line: + + xsd cxx-parser --skel-file-suffix=-xerces-pskel test.xsd + + Or if using Expat instead of Xerces-C++ as the underlying XML parser: + + xsd cxx-parser --xml-parser=expat --skel-file-suffix=-expat-pskel test.xsd + +driver.cxx + Driver for the example. It first parses the command line arguments + and reads the entire document into a memory buffer. It then creates + a SAX parser and pre-parses and caches the schema if validation is + enabled (Xerces-C++ only). Finally, it runs the performance + measurement loop which on each iteration parses the XML document + from the in-memory buffer. + +To compile and link the example manually from the command line we can use +the following commands (replace 'c++' with your C++ compiler name): + +c++ -c test-xerces-pskel.cxx +c++ -c time.cxx +c++ -DXERCES_PARSER -c driver.cxx +c++ -o driver driver.o time.o test-xerces-pskel.o -lxerces-c + +Or if using Expat as the underlying XML parser: + +c++ -c test-expat-pskel.cxx +c++ -c time.cxx +c++ -c driver.cxx +c++ -o driver driver.o time.o test-expat-pskel.o -lexpat + +To run the example on a test XML document execute: + +./driver test-50k.xml + +The -v option can be used to turn on validation in the underlying XML +parser (only makes sense for Xerces-C++, off by default). The -i option +can be used to specify the number of parsing iterations (1000 by default). +For example: + +./driver -v -i 100 test-50k.xml |