проблема производительности с getProperties - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в этом, поэтому я надеюсь, что все правильно.

Я не совсем новичок в написании DXL, но в настоящее время у меня есть проблема с производительностью при вызове getProperties из столбца Layout dxl, который долженотображать исходящие ссылки в зависимости от значения атрибута модуля типа Enum связанного модуля.Код в основном работает, но занимает очень много времени.Комментирование вызова getProperties делает его настолько быстрым, насколько это возможно.Да, вызов записывается точно так, как показано в справочном руководстве DXL.

Вызов атрибута напрямую, с использованием объекта модуля и оператора точки, также не работает, поскольку он всегда возвращает значение по умолчанию перечисления, но не фактическое.

Любые идеи приветствуются ...

ИЗМЕНИТЬ добавленный пример кода ниже

// couple of declarations snipped
string cond = "Enum selection here" // this is modified from actual code, to show the idea
string linkModName = "*"
ModuleProperties mp
for l in all(o->linkModName) do 
{
    otherVersion = targetVersion l
    otherMod = module(otherVersion)
    if (null otherMod || isDeleted otherMod) continue
    othero = target l
    if (null othero) 
    {
        load(otherVersion,false)
    }
    getProperties(otherVersion,  mp)
    sTemp = mp.myAttr
    if (sTemp == cond) continue 

// further code snipped
}

1 Ответ

0 голосов
/ 25 сентября 2019

Я не уверен на 100%, но я думаю, что в некоторых версиях DOORS есть / была проблема производительности со свойствами модуля.

Возможно, вы захотите попробовать следующее, то есть напрямую получить атрибут из загруженногоМодуль

[...]
othero = target l
Module m
if (null othero) 
{
    m = load(otherVersion,false)
} else {
    m = module othero
}
sTemp = m.myAttr
[...]

Внимание! Я не проверял этот фрагмент.

...