Hi all, I am converting a big project that heavily uses XML from Windows platform (using MSXML) to Linux, and I chose Xerces-C++ and XQilla (I need full XPath 1.0 support) as the underlying XML engine. However, the performance of them is not satisfying. I also modified the same application to use the Xerces-C++ instead of MSXML on Windows just for comparison purpouses.
These are some benchmarks I did: Loading of a quite big XML file (10 mb) (using DOMCount utility, so no XQilla involved): - MSXML: 210ms - Xerces on Windows: 470ms - Xerces on Linux: 610ms So Xerces on Windows seems 2x slower than MSXML, and on Linux 3x slower... But the worst performances I get is when using XPath queries, so when XQilla is involved: Execution of 100 selectNodes XPath queries (my own benchmark): - MSXML: 5ms - Xerces on Windows: 78ms - Xerces on Linux: 76ms So here the slowdown is terrifying. I built Xerces and XQilla on Windows using VS2017 in Release configuration, and on Linux using ./configure --host=i686-linux-gnu --enable-transcoder-gnuiconv --disable-network CFLAGS="-m32 -O3 -DNDEBUG" CXXFLAGS="-m32 -O3 -DNDEBUG" LDFLAGS=-m32 (I need to compile for 32bit architecture) So my question is: Is there any known way to optimize the performance of Xerces-C++ and XQilla in both loading and XPath execution? Maybe some compilation flag or "tuning" of the two engines using some API ? (I just need XPath 1.0) Any advice or hint from previous experiences would be appreciated... I know this mailing list has nothing to do with XQilla, but anyway that project seems dead, and maybe someone here has some experience with it. Maybe someone had more luck with Xalan? Otherwise I will have to think about totally changing XML engine... Thanks Davide