summaryrefslogtreecommitdiff
path: root/xsd-examples/cxx/parser/performance/README
diff options
context:
space:
mode:
Diffstat (limited to 'xsd-examples/cxx/parser/performance/README')
-rw-r--r--xsd-examples/cxx/parser/performance/README74
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