Re: Slow performance
Martin Matula <[email protected]> Fri, 11 Jul 2003 09:17:52 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.mdr.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Anders, what you plan to do with perspectives is exactly what our Looks API does - maybe you can reuse it. MDR Explorer is implemented using Looks API. Currently we have ony two "looks" (perspectives) - reflective and MOF. Martin Anders W. Tell wrote: > Thanks Martin ! > > Removing the derived did the trick. > > With regards to this particular traversal , Im just in the beginning of > creating a workbench ( see attached image). Im creating a generic > mechanis for defining perspectives+navigationSteps and this perspective > is the naive one. More perspectives are to follow and Ill have look at > MDR views and principles later on. Certainly pure reflective, MOF, > UML15 and UML2 perspectives are needed. Right now Im focusing to get the > framework going. > > The perspectives with their navigationSteps may be dynamically > registered and when dsiplaying an object, a lookup is performed and the > perspectives that canHandle(Object target) are displayed in the topleft > navigator. > > Kind regards > /anders > Martin Matula wrote: > >> Hi Anders, >> I think the reason why the operation is so slow is because of the >> DependsOn association defined in MOF. It is defined so that it should >> return all the objects that a given object depends on (by any kind of >> other relationships/associations) transitively. This basically means >> that every object is in "DependsOn" relationship with any other >> object. I am not sure about the usefulness of this association in MOF >> but it is there and we have to implement it. Anyway, when you are >> doing this kind of iteration, you should rather restrict the iteration >> only to non-derived associations - those carry all the original >> information. DependsOn is just a derived association (it is computed >> when you access it from the other associations). To do this, you >> should modify your code in a following way: >> > for all in outermost.refAllPackages -> pkg >> > for all in pkg.refAllAssociations -> as >> if (!((Association) as.refMetaObject()).isDerived()) >> > for all in as.refAllLinks >> ... >> >> Btw., why are you doing this kind of iterations for the JTree you want >> to construct? If you know you are operating on the MOF metamodel >> (reading information about UML metamodel), you can build the tree >> based on containment hierarchy (as we did it for MOF extents in MDR >> explorer). >> If you want to build a generic browser, you may want to show separate >> node for each association and fetch the data from MDR only when the >> association node is expanded. Also you may consider exploring the >> metamodel and show all the references of a class under each object >> node and make navigation from a given object to the related objects >> possible (as we did it in the "reflective" view in MDR Explorer). >> Or do I misunderstand your goal? >> Regards, >> Martin >> --- >> >> Anders W. Tell wrote: >> >>> Hi, >>> >>> Im creating a UI for viewing MDR /JMI artifacts for the UML 15. >>> metamodel. When doing the following traversal MDR takes for ever to >>> complete. >>> >>> for all in outermost.refAllPackages -> pkg >>> for all in pkg.refAllAssociations -> as >>> for all in as.refAllLinks >>> --- here it loops calling ModelElementImpl.recursiveFindDeps, >>> --- >>> >>> Basically I want to form a JTree with the artifacts in UML 15 >>> metamodel. Im using the memory database not BTREE for fast performance. >>> >>> Is this a common problem or is a problem with the loop or .... >>> >>> cheers >>> /anders >>> >> >> >> >> > > > ------------------------------------------------------------------------ >