jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Guggisberg (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-1604) NameImpl improvements
Date Fri, 16 May 2008 09:14:55 GMT

    [ https://issues.apache.org/jira/browse/JCR-1604?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12597401#action_12597401
] 

Stefan Guggisberg commented on JCR-1604:
----------------------------------------

1) and 2) were introduced quite a while ago after some extensive profiling/performance testing.
equals()  and hashCode() turned out to consume a lot of CPU time (since names, as part of
property id's, are used as hashmap keys) and the said carefully chosen modifications helped
improve overall performance significantly.

unless there's some real issue with those i'd prefer to not apply the proposed  hanges, i.e.
keep NameImpl as is. 

> NameImpl improvements
> ---------------------
>
>                 Key: JCR-1604
>                 URL: https://issues.apache.org/jira/browse/JCR-1604
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: jackrabbit-jcr-commons
>            Reporter: Jukka Zitting
>            Priority: Minor
>         Attachments: NameImpl.patch
>
>
> I'd like to propose the following changes to NameImpl in jackrabbit-jcr-commons:
> 1) Don't intern the namespace string. Most often the namespace string is in any case
coming from a namespace registry, so there aren't that many copies of the same strings lying
around. Also, I don't think the performance impact on NameImpl.equals() is significant even
if there are multiple copies of the same namespace string.
> 2) Don't memorize the hash code. Since String already memorizes its hash code, the cost
of NameImpl.hashCode() is just a few bytecode instructions. I don't think the performance
benefit is worth the extra complexity and memory overhead.
> 3) Don't memoize the string representation. NameImpl.toString() method is typically only
invoked when debugging or when serializing name values. In both cases the CPU overhead of
recreating the string is insignificant and IMHO not worth the memory overhead .
> I'll attach the patch.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message