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.

Bug 27286

Summary: Optimize Utilities.partialSort
Product: platform Reporter: Jesse Glick <jglick>
Component: -- Other --Assignee: Jaroslav Tulach <jtulach>
Status: RESOLVED FIXED    
Severity: blocker Keywords: PERFORMANCE
Priority: P3    
Version: 3.x   
Hardware: PC   
OS: Linux   
Issue Type: TASK Exception Reporter:
Attachments: Description of the algorithm to detect "strongly connected components" in the graph (czech)

Description Jesse Glick 2002-09-12 23:06:29 UTC
With a proper algorithm to get correct asymptotic
behavior. The overhead of this method becomes
noticeable (though not terribly large) with a lot
of modules: mainly due to dependency sorting.
Comment 1 Jesse Glick 2002-09-12 23:07:20 UTC
Also take a look at times for
org.netbeans.core.modules.Util.DependencyComparator.compare.
Comment 2 Jesse Glick 2002-12-17 20:02:02 UTC
May be more than I thought before; OptIt says that this line

Object elt2 = it2.next ();

is a hot spot.
Comment 3 Jesse Glick 2002-12-18 23:25:59 UTC
committed   * Up-To-Date  1.11        core/manifest.mf
committed   * Up-To-Date  1.11       
core/src/org/netbeans/beaninfo/DataLoaderBeanInfo.java
committed   * Up-To-Date  1.64       
core/src/org/netbeans/core/LoaderPoolNode.java
committed   * Up-To-Date  1.49       
core/src/org/netbeans/core/modules/ModuleManager.java
committed   * Up-To-Date  1.17       
core/src/org/netbeans/core/modules/Util.java
committed   * Up-To-Date  1.25       
core/test/unit/src/org/netbeans/core/modules/ModuleManagerTest.java
committed   * Up-To-Date  1.90        openide/openide-spec-vers.properties
committed   * Up-To-Date  1.121      
openide/api/doc/changes/apichanges.xml
committed   * Up-To-Date  1.42       
openide/src/org/openide/loaders/DataLoader.java
committed   * Up-To-Date  1.60       
openide/src/org/openide/loaders/FolderList.java
committed   * Up-To-Date  1.9        
openide/src/org/openide/loaders/FolderOrder.java
committed   * Up-To-Date  1.112      
openide/src/org/openide/util/Utilities.java
added       * Up-To-Date  1.1        
openide/test/unit/src/org/openide/util/UtilitiesTopologicalSortTest.java
Comment 4 Jaroslav Tulach 2003-01-07 10:38:29 UTC
In topological_sort_27286 branch (branch point is BLD200301070100)
there is a bit improved version of Utilities.topologicalSort that does
cycle detection and removes the necessity for topologicalSortError
method. On the other hand it introduces new exception that is thrown
in case a cycle is detected.

Reopened to let Jesse evaluate the new version and decide whether it
is better than the original.
Comment 5 Jaroslav Tulach 2003-01-09 08:47:19 UTC
Does the silence means that the branch should be integrated? Ok, I'll
do that tomorrow.
Comment 6 Jaroslav Tulach 2003-01-09 08:49:06 UTC
Created attachment 8487 [details]
Description of the algorithm to detect "strongly connected components" in the graph (czech)
Comment 7 Jesse Glick 2003-01-09 12:26:33 UTC
Sorry, I saw your work but did not get a chance to pay more attention.
I guess it is good - briefly looked at the branch. Did not try to
understand all of TopologicalSortException in detail, but will assume
it is right - tests look good.

Missing @since on TSE.

Also need to update all core + openide clients (incl. FolderList.main
which still uses old partialSort due to richer error reporting - can
now be replaced).
Comment 8 Jaroslav Tulach 2003-01-09 16:24:46 UTC
Thanks for comments, I'll integrate it.
Comment 9 Jaroslav Tulach 2003-01-10 10:47:33 UTC
/cvs/openide/openide-spec-vers.properties,v  
new revision: 1.95
/cvs/openide/api/doc/changes/apichanges.xml,v
new revision: 1.127;
/cvs/openide/src/org/openide/loaders/FolderList.java,v  
new revision: 1.63
/cvs/openide/src/org/openide/util/TopologicalSortException.java
new revision: 1.2
/cvs/openide/src/org/openide/util/Utilities.java,v
new revision: 1.119; 
cvs diff: TopologicalSortException.java is a new entry, no
/cvs/openide/test/unit/src/org/openide/util/UtilitiesTopologicalSortTest.java
new revision: 1.5
/cvs/core/src/org/netbeans/core/LoaderPoolNode.java
new revision: 1.68
/cvs/core/src/org/netbeans/core/modules/ModuleManager.java
new revision: 1.53