[ 
https://issues.apache.org/jira/browse/SLING-2255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13154236#comment-13154236
 ] 

Antonio Sanso commented on SLING-2255:
--------------------------------------

Thanks a lot for your comment Carsten.

Yes this

 if 
(this.factory.getMapEntries().getVanityMaps().containsKey(getPathVanityKey(absPath))){
 

is supposed to be by "design" in order to match with 

..
vanityMaps.put(pVanityPath,entries); 
..

I have spot a bug in the #getPathVanityKey method though but can be easily 
corrected... 
Moreover since I have created the patch I have noticed that this could be 
further optimized 

This

if 
(this.factory.getMapEntries().getVanityMaps().containsKey(getPathVanityKey(absPath))){
                for (MapEntry mapEntry : 
this.factory.getMapEntries().getResolveVanityMaps()) {

could be replaced with

if 
(this.factory.getMapEntries().getVanityMaps().containsKey(getPathVanityKey(absPath))){
                 MapEntry mapEntry= 
this.factory.getMapEntries().getResolveVanityMaps().get(getPathVanityKey(absPath))

avoiding the loop. 
Overall I do agree with your comments. The best approach would be a complete 
redesign in order to have a more clean approach. 
About the two different maps I am not sure if you have noticed that the 
semantic for the #getResolveMaps method is the same since it merges and sorts 
the two maps.

As you said though this is really in the heart of Sling and any change here 
should be done really carefully. A more extensive test coverage might help here 
(but I must say the existing one for this area is pretty good).

                
> Improve JcrResourceResolver#resolve performance when big number of vanityPath 
> are present
> -----------------------------------------------------------------------------------------
>
>                 Key: SLING-2255
>                 URL: https://issues.apache.org/jira/browse/SLING-2255
>             Project: Sling
>          Issue Type: Improvement
>          Components: JCR
>    Affects Versions: JCR Resource 2.0.10
>            Reporter: Antonio Sanso
>            Assignee: Carsten Ziegeler
>            Priority: Minor
>             Fix For: JCR Resource 2.1.0
>
>         Attachments: SLING-2255.txt, performance.pdf
>
>
> At the moment the performance of JcrResourceResolver#resolve is tight with 
> the number of sling:vanityPath present in the repository.
> Large number of vanityPath means large response time  specially in the worse 
> case scenario (namely huge number of vanityPath and request that doesn't 
> match any vanityPath) but also in the average cases.
> Sling currently employs generic regexps also for vanityPath, but since the 
> regex behind a vanityPath is well know there is room for optimization.
> I'll attach a graphs that shows the situation and a potential patch.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to