Enhancing parsing performance 2003-01-13 - By Brian Madigan
You could try not creating a new parser all the time, although this might cause other problems. Im guessing that this code is only that slow THE FIRST TIME THROUGH. Hopefully after the JVM hotspots it, this block of code runs much faster. You are not doing any validation apparently, so you cant gain any more performance by turning that off. I cant imagine that parsing a 3k file is taking 4 seconds. If you want an accurate measure, try taking snapshots of the system time (System.currentTimeMillis( )) before and after parse( ) method call. The 4 seconds you describe could be the JVM loading and object initialization. Also, I don't recommend going around factories to instantiate concrete classes. Unless the factories are really heavy you won't see a substiantial performance gain.
long start = System.currentTimeMillis( ); parser.parse(m_file.toURI().toString()); m_document = parser.getDocument(); long end = System.currentTimeMillis( ); System.out.println("parse time: "+(end-start)+" ms");
--- Jean Georges PERRIN <jgp@(protected)> wrote: > Hi, > > Thanks for those who helped me with cloning... > > I am a little surprised with performance. Maybe > there are some basic things > I am doing wrong. > > I am parsing a 3 Kb XHTML file and it takes me about > 4s, cloning the tree > takes me roughly a ridiculous amount of time (10ms). > This on an Athlon XP > 1800+ running XP (sure I could switch to Linux but > it is not planned for now > :) ). > > My code for parsing: > protected void load () { > DOMParser parser; > > try { > parser = new DOMParser(); > } > catch (Exception e) { > log.severe ("Error: Unable to instantiate > parser"); > return; > } > > try { > parser.parse(m_file.toURI().toString()); > m_document = parser.getDocument(); > } > catch (SAXParseException e) { > // ignore > } > catch (Exception e) { > String msg; > msg = ("Error: Parse error occurred, " + > e.getMessage()); > if (e instanceof SAXException) { > e = ((SAXException)e).getException(); > } > msg += '\n' + e.toString(); > log.severe (msg); > } > } > > Questions: > 1/ is static'ing my parser will enhance the process? > 2/ can I "pre" create some objects I can reuse? > 3/ are there some eventual verification I can turn > off? > > My code for cloning: > public Object clone() { > XHTML11Window win = new XHTML11Window(m_file); > win.m_document = new DocumentImpl(); > > win.m_document.importNode(m_document.getDocumentElement(), > true); > > return win; > } > > I haven't checked that they really were cloned, but > it looks as if they > were... > > Any tips are more than welcome! > > Jean Georges PERRIN > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > xerces-j-user-unsubscribe@(protected) > For additional commands, e-mail: > xerces-j-user-help@(protected) >
__________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|