You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Stefan Egli (JIRA)" <ji...@apache.org> on 2016/11/29 14:32:58 UTC

[jira] [Created] (OAK-5186) ChangeSetFIlterImpl: support many includePaths by filtering for 1st path name

Stefan Egli created OAK-5186:
--------------------------------

             Summary: ChangeSetFIlterImpl: support many includePaths by filtering for 1st path name
                 Key: OAK-5186
                 URL: https://issues.apache.org/jira/browse/OAK-5186
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.5.14
            Reporter: Stefan Egli
             Fix For: 1.6


When there is a large number of include paths in the ChangeSetFilterImpl and combine that with a large-ish ChangeSet (many paths) then the comparison becomes expensive, as there is a loop with each ChangeSet-path, then looping through each include path. Basically an {{O(n*m)}}.

A probably ideal solution would be to implement a tree with the tree items be the path elements. And have two sets of trees: the filter one and the ChangeSet one.

A simpler and perhaps 'good enough' solution could be to just look at the first level name of both the filter include paths: if a ChangeSet path's first level name is not in that set, then it can't be included. That would allow to skip the pattern comparison (which is slower even though it is a compiled {{Pattern}}).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)