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 <[EMAIL 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:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to