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
>>>
>>
>>
>>
>>
> 
> 
> ------------------------------------------------------------------------
>