2014-09-04 128 views
0

我已经使用了Rhapsody Java API来为我的rhapsody项目创建一个插件。我的问题是它非常缓慢。我有以下功能:Rhapsody插件Java API,执行速度极慢

private static void collectElements(final IRPModelElement curEl, 
     final IRPCollection elCol) { 
    // collect contained elements 
    for (Object it : curEl.getNestedElements().toList()) { 
     IRPModelElement element = (IRPModelElement) it; 
     if (!skipElement(element)) { 
      // add element itself 
      elCol.addItem(element); 

      // descend 
      collectElements(element, elCol); 
     } 
    } 
} 

收集所选元素的所有嵌套元素。我的项目有大约7500个元素,需要22秒才能完成上述功能。我尝试使用selectedElement.getNestedElementsRecursive()获取所有元素,并使用List或HashSet,但.toList()函数也非常缓慢。任何建议?

+0

你打开你的项目:“所有子单元”+“按需加载”? – Centimane 2014-10-07 11:40:20

回答

0

由于某些原因,Rhapsody插件在内部Rhapsody虚拟机中运行时运行速度快得多(快得多)。

为此,请将java编译为.jar并使用帮助程序文件配置模型,以将Rhapsody触发器(通常是工具菜单或上下文菜单选项)链接到jar。

这种方式运行加载项使用通用的Rhapsody虚拟机,速度更快,但要小心! Java版本取决于您使用的Rhapsody版本的设置,并且名称冲突可能是一个问题(如果您有两个具有相同名称的类的多个加载项,Rhapsody将只加载一个)。

有关设置帮助程序文件的更多信息,请参阅Andy Lapping(IBM员工)的网站here