Re: Unneeded hashtable in LazyHTMLDocument

Jacob Kjome <[email protected]> Mon, 24 Nov 2003 21:45:04 -0600
Newsgroups gmane.comp.java.enhydra.xmlc
Message-ID <[email protected]>
Did you have a previous submission to the list?  I can't find it.  Anyway, 
no matter if this wraps up the previous one.

Richard or David.  Do you guys see anything wrong with this patch?  If not, 
I can check it in.

Jake

At 10:15 AM 11/19/2003 -0600, you wrote:
>Currently in LazyHTMLDocument, which is currently using a Hashtable, the 
>createElement method will
>block on the _elementConstHTML.get() call, since hashtables are synchronized.
>
>Since the map is read-only after it is created, it should be slightly 
>faster to use a HashMap,
>as long as you are careful not to access the map before it is finished 
>being created.
>
>The following diff should accomplish this, and offer at least a slight 
>performance boost in
>multithreaded situations.
>
>This diff corrects a problem in my previous submission to this list, in 
>that the map now can't be
>accessed until it is completely initialized.
>
>Mark Leverentz
>
>
>Index: LazyHTMLDocument.java
>===================================================================
>RCS file: 
>/cvsroot/xmlc/xmlc/xmlc/modules/xmlc/src/org/enhydra/xml/lazydom/html/LazyHTMLDocument.java,v
>retrieving revision 1.2
>diff -b -r1.2 LazyHTMLDocument.java
>92c92
><
>---
> > import org.enhydra.apache.html.dom.*;
>180,181c180,181
><     private static Hashtable        _elementConstHTML;
><
>---
> >     private static HashMap        _elementConstHTML;
> >     private static HashMap        _tmpElementConstHTML;
>612c612
><         _elementConstHTML = new Hashtable( 63 );
>---
> >         _tmpElementConstHTML = new HashMap( 63 );
>675a676
> >         _elementConstHTML = _tmpElementConstHTML;
>679c680
><     private static void populateElementType( String tagName, String 
>className )
>---
> >     private static void populateElementType(String tagName, String 
> className )
>683c684
><           _elementConstHTML.put( tagName, cl.getConstructor( 
>_elemClassSigHTML ));
>---
> >           _tmpElementConstHTML.put( tagName, cl.getConstructor( 
> _elemClassSigHTML ));
>_______________________________________________
>XMLC mailing list
>[email protected]
>http://www.enhydra.org/mailman/listinfo.cgi/xmlc