[jbosscache-dev] Fqns and immutability

Manik Surtani manik at jboss.org
Fri Mar 2 06:03:29 EST 2007


Related to the "Fqns-as-strings" discussion, we assume that all Fqns  
are immutable.  I.e., they have no mutators and when we peek() at  
their elements, we get an immutable collection.

But this does not mean that Fqns which are equal point to the same  
object though.  For example,

	assertSame(Fqn.fromString("/stuff"), Fqn.fromString("/stuff"))

fails even though

	assertEquals(Fqn.fromString("/stuff"), Fqn.fromString("/stuff"))

passes.

The question to ask is, should the Fqn constructors be made private  
(or protected), forcing users to use factory methods like  
Fqn.fromString(String s) and Fqn.fromObjects(Object... objects) and  
Fqn.fromObjects(Fqn base, Object... objects) so that these factory  
methods can maintain references to existing Fqns (perhaps in a weak  
map so they can be gc'd when no longer referenced) and reuse these if  
possible rather than construction all the time?

This was prompted by my running some profiling tests on 2.0.0.BETA1  
and found that almost 6% of the time spent (only on a particular test  
- so not a generic comment) was spent on Fqn construction.  And quite  
often this was the same Fqn.

Thoughts?
--
Manik Surtani

Lead, JBoss Cache
JBoss, a division of Red Hat

Email: manik at jboss.org
Telephone: +44 7786 702 706
MSN: manik at surtani.org
Yahoo/AIM/Skype: maniksurtani





More information about the jbosscache-dev mailing list