Hi,

A colleague was doing some performance testing and discovered some
contention at this line of my code:

XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");

...which was surprising : ) He informed me it was doing a blocking
operation every time.

Anyway, he went away and went through the Xerces source and found that
if the "org.apache.xerces.xni.parser.XMLParserConfiguration" system
property is not set it does indeed do a blocking operation (in
parsers.ObjectFactory)

To demonstrate this, run the below code with and without the system
property set:

public static void main(String... args) throws Exception {

    //System.setProperty("org.apache.xerces.xni.parser.XMLParserConfiguration",
    //        "org.apache.xerces.parsers.XIncludeParserConfiguration");

    long start = System.nanoTime();

    for (int i = 0; i <= 10000; i++) {
        XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
    }

    long end = System.nanoTime();
    double millis = (end - start) * 1e-6;

    System.out.println(millis);

}

On my machine it consistently takes around ~2000ms without the system
property, and ~1300ms with.

This is present in both 2.9 and 2.11 as far as I can see.




-- 
Andrew Welch
http://andrewjwelch.com

---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-users-h...@xerces.apache.org

Reply via email to