Welcome to Telelogic Product Support
  Home Downloads Knowledgebase Case Tracking Licensing Help Telelogic Passport
Telelogic DOORS (steve huntington)
Decrease font size
Increase font size
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
Search Topic Search Topic
Topic Tools Topic Tools
Quick Reply Quick Reply
Subscribe to this topic Subscribe to this topic
E-mail this topic to someone. E-mail this topic
Bookmark this topic Bookmark this topic
View similar topics View similar topics
View topic in raw text format. Print this topic.
 7-Sep-2006 02:38
User is offline View Users Profile Print this message


Bob Sherman

Posts: 6
Joined: 22-Oct-2002

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 06:21
User is offline View Users Profile Print this message


Andrew Tagg

Posts: 151
Joined: 26-Oct-2004

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 11:18
User is offline View Users Profile Print this message


Richard Good

Posts: 152
Joined: 22-Mar-2005

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 14:34
User is offline View Users Profile Print this message


Tony Goodman

Posts: 1098
Joined: 12-Sep-2002

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 16:36
User is offline View Users Profile Print this message


Richard Good

Posts: 152
Joined: 22-Mar-2005

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 17:36
User is offline View Users Profile Print this message


Shawn Stepper

Posts: 96
Joined: 6-Aug-2004

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
Report this to a Moderator Report this to a Moderator
 7-Sep-2006 19:42
User is offline View Users Profile Print this message


Shawn Stepper

Posts: 96
Joined: 6-Aug-2004

My initial impression is that saving all of the modules helped, but what a hassle!

-------------------------
Shawn Stepper
shawn.e.stepper@wellsfargo.com
Report this to a Moderator Report this to a Moderator
 8-Sep-2006 18:38
User is offline View Users Profile Print this message


Louie Landale

Posts: 2070
Joined: 12-Sep-2002

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
Report this to a Moderator Report this to a Moderator
 8-Sep-2006 19:04
User is offline View Users Profile Print this message


Louie Landale

Posts: 2070
Joined: 12-Sep-2002

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
Report this to a Moderator Report this to a Moderator
 10-Sep-2006 12:23
User is offline View Users Profile Print this message


Bob Sherman

Posts: 6
Joined: 22-Oct-2002

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?
Report this to a Moderator Report this to a Moderator
Statistics
20925 users are registered to the Telelogic DOORS forum.
There are currently 2 users logged in.
The most users ever online was 15 on 15-Jan-2009 at 16:36.
There are currently 0 guests browsing this forum, which makes a total of 2 users using this forum.
You have posted 0 messages to this forum. 0 overall.

FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.