![]() |
Telelogic DOORS (steve huntington) | ![]() |
new topic :
profile :
search :
help :
dashboard :
calendar :
home
|
||
Latest News:
|
|
Topic Title: DXL Attributes Slow Module Open Operation Topic Summary: Adding many DXL Attributes to a module, slows module open operation Created On: 7-Sep-2006 02:38 Status: Post and Reply |
Linear : Threading : Single : Branch |
![]() |
![]()
|
![]() |
|
I created about a half dozen fairly compute intensive DXL Attributes to a module. I was expected to wait a significant amount of time for each of these attributes to calculate (when accessed). However, I am encountering a significant performance hit simply opening the module (without accessing any of these attributes). Any ideas on why the module would open more slowly? Any tips for writing DXL Attributes so that they don't slow down module open operations?
Edited: 7-Sep-2006 at 02:39 by Bob Sherman |
|
![]() |
|
![]() |
|
Hi Bob, do those attributes reference information held in other modules? E.g. info from the other end of links. My guess is that DOORS has to go open all the linked modules to evaluate the info before formatting the DXL Attributes.
I have had the same problem, in some cases i can get around the problem by using a standard attribute and writing a small 'refresh' routine to re populate the data on request.
I guess the usefulness of that solution would depend upon how fast the information changes, and the 'savvy' of your users.
Rgds
Andrew.
------------------------- Andrew Tagg Thales Air Systems, Melbourne Australia. andrew.tagg@thalesatm.com |
|
![]() |
|
![]() |
|
If this is the case and your attribute dxl is chasing down the links then make sure you declare the module variable for holding the target module within the check not above it eg: -
Module Fred if (! open(module "/My Proj/My Mod")) Fred=read("/My Proj/My Mod", false) is much slower than :- if (! open(module "/My Proj/My Mod")) Module Fred=read("/My Proj/My Mod", false) ------------------------- Regards, Richard Good |
|
![]() |
|
![]() |
|
Richard, is this really the case?
I have a coding standard that dictates all variables are declared and initialised up front at the beginning of the function. It prohibits variables being declared inside loops or conditional statements. The reasons for this are clear, but if there is a significant performance hit, them maybe I should re-think. ------------------------- Tony Goodman http://www.smartdxl.com |
|
![]() |
|
![]() |
|
Tony,
I can remember coming up with this trick years ago and that it helped significantly (I worry that I haven't tried it the conventional way in a long time!!), hopefully the trick still helps today. Anyway its easy to test out, it also makes sense when you think about the way attribute dxl must work. I may be giving you only half the story I generate Attribute dxl using my variant on the traceability wizard I probably thought the attribute dxl was opening a reference to the target module for each object in the source module and that was slowing it down - can't remember. I needed a Module variable, but wanted to avoid creating multiple references so used the item reference method which helps a lot with the speed(see code). I also believe the declaration inside the if statement helped with the speed, I did a lot of messing around with the various options at the time so am reasonably confident that this is an an efficient method. string MY_MODULE = "/DOORS Development/Fred" if (! open(module(MY_MODULE))) { Module TheTargMod= read(MY_MODULE,false) } Module TarMod = module(item(MY_MODULE)) ------------------------- Regards, Richard Good Edited: 7-Sep-2006 at 18:42 by Richard Good |
|
![]() |
|
![]() |
|
I'm having the exact same problem. My code was unchanged from DOORS 7.1 to DOORS 8.1, but the performance dropped terribly after upgrading. The issue seems to be with attribute DXL, which opens other modules. It's taking a really long time for the DXL to open the modules.
I submitted a trouble ticket to Telelogic support, and got the following: I was wondering if you had recently migrated the database from DOORS 7.1. If this is the case, have you opened all the modules in Exclusive edit mode and saved it at least once? From DOORS 8.0 onwards, data is represented in Unicode format and hence, DOORS takes more time while opening the module for the first time. Once you save these modules in exclusive edit mode, the load time generally reduces Could you please try opening a module in Exclusive edit mode, save and close it, and then try opening the same module using the DXL script? I'm still in the process of doing this, but will post an update if it helps. ------------------------- Shawn Stepper shawn.e.stepper@wellsfargo.com |
|
![]() |
|
![]() |
|
My initial impression is that saving all of the modules helped, but what a hassle!
------------------------- Shawn Stepper shawn.e.stepper@wellsfargo.com |
|
![]() |
|
![]() |
|
My solution to all this is as follows: write a script that manages its own attributes. It does all the calulcations for all objects in the module and sets the correct attribute values. Schedule the script to run nightly. The script can run for all modules, or the current module. If a user needs the attributes updated right now, they can run the script manually.
- Louie |
|
![]() |
|
![]() |
|
I ran the attached DXL that is intended to find out how long it takes to declare stuff. There seemed to be a slight increases for some variable types compared to "none" declaractions, all results were 2 seconds for no declaraction, and 4-5 seconds for the other declaractions. Here's the print out from the script:
#Iterations = 100000 #Loops = 10 None 2 seconds Item 4 seconds Project 4 seconds Folder 5 seconds Module 5 seconds Object 5 seconds Link 5 seconds MRef 5 seconds None 2 seconds Same results for v7.1 and for v8.1. So it does seem as though declaring a variable takes some time, but an increase of 3 seconds for 1 million declaractions doesn't seem 'significant' to me. Perhaps this test isn't realistic and I look forward to your critique. - Louie |
|
![]() |
|
![]() |
|
Thanks for all responses. As Richard Good suggested... I've made it a practice of avoided declarations where possible... so my problem is being caused entirely by the opening of the many modules referenced by DXL Attributes. However, given the dxl ref manual snip-it below and given that my default views do not ref any DXL Attributes... I don't understand why this is happending.
------DXL Ref manual--------- DXL code is not executed when the containing module is opened, but when some event occurs that causes the attribute to be accessed. ---------------------------------- Could I be doing something to force these attributes to be accessed on module open? Thoughts? |
|
![]() |
Telelogic DOORS
» DXL Exchange
»
DXL Attributes Slow Module Open Operation
|
![]() |
FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.