This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Summary: | Use lazy filtering list to speedup explorer | ||
---|---|---|---|
Product: | platform | Reporter: | Jaroslav Tulach <jtulach> |
Component: | Explorer | Assignee: | Jaroslav Tulach <jtulach> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | anebuzelsky, dbalek, mmatula, phrebejk, pnejedly, rkubacki, ttran, t_h |
Priority: | P4 | Keywords: | PERFORMANCE |
Version: | 4.x | ||
Hardware: | PC | ||
OS: | Linux | ||
URL: | http://wiki.netbeans.org/FitnessViaLaziness | ||
Issue Type: | TASK | Exception Reporter: | |
Bug Depends on: | 51716, 53853, 53854, 53856, 53857, 67440 | ||
Bug Blocks: | |||
Attachments: |
Implementation and tests of the lazy filtering list model
Additinal changes in openide/loaders and TreeView to support lazy explorer over data objects The additional patch for openide/loaders and TreeView updated to current main trunk |
Description
Jaroslav Tulach
2004-08-04 15:16:29 UTC
The work is available in openide/src/org/openide/explorer/view and in openide/test/unit/src/org/openide/explorer/view in a branch lazy_list_46900 which is rooted at BLD200408021800. In order to get the preview you can cvs co openide -f -r lazy_list_46900 and execute the test ant -f openide/test/build.xml -Dxtest.attribs=empty -Dxtest.include=**/LazyListModelTest* I believe that the code in branch is currently in good state for a working prototype. If the mdr team can provide lazy list and a filter, I we can try this filtering list model as a model for code completion JList and measure the speed up. Especially for "new " + Ctrl-Space it could be really significant. I am going to attach the diff of current state, in the test uncomment "testVisual" method to see the filtering in action (keeps only even numbers). Created attachment 16718 [details]
Implementation and tests of the lazy filtering list model
I have just branched org.openide.nodes so I can implement the laziness in Children.Keys openide/src/org/openide/nodes$ cvs upd -r BLD200409131800 openide/src/org/openide/nodes$ cvs tag -b lazy_list_46900 you can still get the whole branch by cvs co -r lazy_list_46900 -f openide and run the tests ant -f openide/test/build.xml -Dxtest.attribs=empty -Dxtest.include=**/view/*Lazy* Created attachment 17777 [details]
Additinal changes in openide/loaders and TreeView to support lazy explorer over data objects
Created attachment 18028 [details]
The additional patch for openide/loaders and TreeView updated to current main trunk
cvs -q ci -m "Creating lazy_list_46900 branch for whole openide and bringing it up-to-date to BLD200410070525" cvs -q ci -m "Bringing up to date with build BLD200410121800" cvs ci -m "Bringing up to date with build BLD200411081900" openide See http://openide.netbeans.org/proposals/arch/scalable-explorer.html for description of what are the goals of such speedup. cvs -q ci -m "Brought up-to-date with BLD200411281900" cvs -q ci -m "Merging 34 new tests from the lazy_list_46900 branch to trunk as they seem to test features that are not dependant on the changes in code made in the branch" Checking in src/org/openide/explorer/view/VisualizerNode.java; /cvs/openide/src/org/openide/explorer/view/VisualizerNode.java,v <-- VisualizerNode.java new revision: 1.46; previous revision: 1.45 done Processing log script arguments... More commits to come... Checking in src/org/openide/nodes/Children.java; /cvs/openide/src/org/openide/nodes/Children.java,v <-- Children.java new revision: 1.129; previous revision: 1.128 done Processing log script arguments... More commits to come... Checking in test/unit/src/org/openide/explorer/view/VisualizerNodeTest.java; /cvs/openide/test/unit/src/org/openide/explorer/view/VisualizerNodeTest.java,v <-- VisualizerNodeTest.java new revision: 1.2; previous revision: 1.1 done Processing log script arguments... More commits to come... Checking in test/unit/src/org/openide/nodes/ChildrenArrayNodeAtShouldNotBeSlowTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenArrayNodeAtShouldNotBeSlowTest.java,v <-- ChildrenArrayNodeAtShouldNotBeSlowTest.java new revision: 1.2; previous revision: 1.1 done Checking in test/unit/src/org/openide/nodes/ChildrenArrayTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenArrayTest.java,v <-- ChildrenArrayTest.java new revision: 1.6; previous revision: 1.5 done Checking in test/unit/src/org/openide/nodes/ChildrenFilterAsArrayTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenFilterAsArrayTest.java,v <-- ChildrenFilterAsArrayTest.java new revision: 1.2; previous revision: 1.1 done Checking in test/unit/src/org/openide/nodes/ChildrenFilterAsKeysTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenFilterAsKeysTest.java,v <-- ChildrenFilterAsKeysTest.java new revision: 1.2; previous revision: 1.1 done Checking in test/unit/src/org/openide/nodes/ChildrenKeysAsArrayTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenKeysAsArrayTest.java,v <-- ChildrenKeysAsArrayTest.java new revision: 1.2; previous revision: 1.1 done Checking in test/unit/src/org/openide/nodes/ChildrenKeysGarbageCollectTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenKeysGarbageCollectTest.java,v <-- ChildrenKeysGarbageCollectTest.java new revision: 1.2; previous revision: 1.1 done Checking in test/unit/src/org/openide/nodes/ChildrenKeysTest.java; /cvs/openide/test/unit/src/org/openide/nodes/ChildrenKeysTest.java,v <-- ChildrenKeysTest.java new revision: 1.13; previous revision: 1.12 done Checking in test/unit/src/org/openide/nodes/FilterNodeTest.java; /cvs/openide/test/unit/src/org/openide/nodes/FilterNodeTest.java,v <-- FilterNodeTest.java new revision: 1.19; previous revision: 1.18 done cvs diff: ChildrenArrayNodeAtShouldNotBeSlowTest.java is a new entry, no comparison available cvs diff: ChildrenFilterAsArrayTest.java is a new entry, no comparison available cvs diff: ChildrenFilterAsKeysTest.java is a new entry, no comparison available cvs diff: ChildrenKeysAsArrayTest.java is a new entry, no comparison available cvs diff: ChildrenKeysGarbageCollectTest.java is a new entry, no comparison available cvs -q ci -m "Bringing up to date with trunk build BLD200411291900, so the backported tests are now synchronized" Checking in test/unit/src/org/openide/loaders/OperationListenerTest.java; /cvs/openide/test/unit/src/org/openide/loaders/OperationListenerTest.java,v <-- OperationListenerTest.java new revision: 1.4.30.1; previous revision: 1.4 done Processing log script arguments... More commits to come... Checking in test/unit/src/org/openide/util/MutexTest.java; /cvs/openide/test/unit/src/org/openide/util/MutexTest.java,v <-- MutexTest.java new revision: 1.12.2.2; previous revision: 1.12.2.1 cvs -q ci -m "Bringing up to date with build BLD200501191900" I would say that the branch "almost" works, but I am not aware of any plan to really get it into trunk: - people may get LazyListModel, which works without problems - the work on lazy Visualizers and FilterNode is also easily portable - the improvements to Children.Keys may seem controversial the basic problems right now are two - garbage collector negatively influences stability of the work in children and meanwhile there was a reformating effort in trunk and bringing the whole branch up to date may be pretty hard. > the basic problems right now are ...
more to think about: how will quick search functionality live with the lazy list?
Let's give this project new boost: http://wiki.netbeans.org/FitnessViaLaziness Present since 78bc89404dae |