jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jukka Zitting (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-235) Cache jcr name to QName mappings
Date Mon, 03 Oct 2005 14:50:51 GMT
    [ http://issues.apache.org/jira/browse/JCR-235?page=comments#action_12331171 ] 

Jukka Zitting commented on JCR-235:
-----------------------------------

Sounds great! +1 from me, especially the LRUMap is a nice touch, no need to worry about DoS
threats due to this.

Design comment: The NamespaceRegistryImpl dependency seems out of place. How about the following
structure?

org.apache.jackrabbit.name:
    public interface NamespaceListener
    public interface QNameResolver
    public class StandardQNameResolver implements QNameResolver
    public class CachingQNameResolver implements QNameResolver, NamespaceListener

The static QName.toJCRName and QName.fromJCRName methods could be moved to StandardQNameResolver
to simplify the QName class.
The CachingQNameResolver could  be implemented as a decorator on top of another QNameResolver
implementation (StandardQNameResolver by default).
Client code should register and deregister the CachingQNameResolver as a namespace change
listener.

This structure would add a tiny amount of overhead (a virtual vs. a static method call + some
extra object instances), but would IMHO add much flexibility to the resolution process while
keeping the package boundaries nice and solid.

> Cache jcr name to QName mappings
> --------------------------------
>
>          Key: JCR-235
>          URL: http://issues.apache.org/jira/browse/JCR-235
>      Project: Jackrabbit
>         Type: Improvement
>   Components: core
>     Reporter: Marcel Reutegger
>     Assignee: Stefan Guggisberg
>     Priority: Minor
>  Attachments: QNameResolver.patch
>
> Currently jcr names are always parsed and resolved into QName instances. Introducing
a cache would increase performance and also save memory because well known and often used
jcr names would always return the same QName instance from cache.
> Testing with common read operations shows a performance improvement of about 25%.
> The test involved the following methods on Node interface:
> - getProperty()
> - getProperties()
> - getName()
> - getPath()
> - isLocked()
> - isNodeType()
> - getPrimaryNodeType()
> - hasNodes()
> - getNodes()
> Attached proposed implementation of a QNameResolver.
> Please comment.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message