[jdom-interest] AttributeList performance

Victor Toni victor.toni at ebuconnect.de
Thu Apr 28 08:15:27 PDT 2005


Elliotte Harold wrote:

> Victor Toni wrote:
>
>> Maybe something like this (which could be still optimized if called 
>> often):
>>
>>     public final int hashCode() {
>>         return name.hashCode() * 29 + namespace.hashCode();
>>     }
>
> This would be inappropriate for a general purpose hashCode method 
> because it would lead to numerous hash collisions. 

Correct. It would be appropriate for qualified names. For an Attribute 
it should include the value.

> For instance, all the id attributes in every document would have the 
> same hash, regardless of their distinct values.

Right, but usually this is only important when collecting all attributes 
in a document(XPath, validation, etc.). This should be less regular then 
getting certain attributes from an element.

>
> A better solution would be to use the attributes' qualified names 
> (unique within any one attribute) as the key into the hash table 
> rather than the Attribute objects themselves.

> Again, however, I doubt the overhead justifies the "optimization". 
> Barring hard evidence to the contrary, I think the the current 
> approach is faster and should be preferred.
>
Therefore I suggested an additional class for qualified names. It would 
help creating other access mechanisms. The current 
Element.getAttribute(name) is O(N) but could be O(log(n)). Surely this 
change would be mainly for cases where there are a lot of atrributes but 
it would hurt simple documents?



More information about the jdom-interest mailing list