[ 
https://issues.apache.org/jira/browse/JCR-2033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Mueller resolved JCR-2033.
---------------------------------

    Resolution: Won't Fix

I don't plan to work in this issue for Jackrabbit 2.x.
We should ensure it's solved in Jackrabbit 3 however.

> Node.orderBefore is slow
> ------------------------
>
>                 Key: JCR-2033
>                 URL: https://issues.apache.org/jira/browse/JCR-2033
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-core
>            Reporter: Thomas Mueller
>            Assignee: Thomas Mueller
>            Priority: Minor
>
> Use case: I have a node with a medium number of child nodes, and want to sort 
> the child nodes. To do that, I use Node.orderBefore.
> This is slow (31 seconds to sort 2000 child nodes), O(n^2).
> Workarounds: 
> 1) don't use that many child nodes
> 2) instead of using orderBefore, create a new node with the children in the 
> right order
> Test case:
> Session session = new TransientRepository().login(new SimpleCredentials("", 
> new char[0]));
> Node root = session.getRootNode();
> Node test = root.hasNode("test") ? root.getNode("test") : 
> root.addNode("test");
> long start = System.currentTimeMillis();
> int len = 2000;
> for (int i = 0; i < len; i++) {
>     test.addNode("n" + i);
> }
> System.out.println("creating: " + (System.currentTimeMillis() - start));
> session.save();
> start = System.currentTimeMillis();
> for (int i = 0; i < len; i++) {
>     test.orderBefore("n" + i, null);
> }
> System.out.println("sorted: " + (System.currentTimeMillis() - start));
> session.logout();
> Output:
> creating: 712
> sorted: 31281
> Possible solutions:
> - speed up Node.orderBefore
> - create a 'sorting tool' that uses the 'create new node' trick
> - create a new (Jackrabbit internal) solution to sort quickly

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

Reply via email to