Hi Andrew, Creating a new XML parser can be very expensive. The ClassLoader used to create the parser and its internal components might block or spend a long time searching its "classpath" for META-INF/services files. This is why it's generally a good idea to cache and reuse [1] XML parser instances.
Thanks. [1] http://www.ibm.com/developerworks/xml/library/x-perfap2/index.html#reuse Michael Glavassevich XML Technologies and WAS Development IBM Toronto Lab E-mail: mrgla...@ca.ibm.com E-mail: mrgla...@apache.org Andrew Welch <andrew.j.we...@gmail.com> wrote on 11/12/2013 07:48:47 AM: > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org For additional commands, e-mail: j-users-h...@xerces.apache.org