我使用了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 :(得分:0)
出于某种原因,在内部Rhapsody虚拟机中运行时,Rhapsody加载项运行得更快(更快)。
为此,将java编译为.jar并使用帮助文件配置模型,以将Rhapsody触发器(通常是工具菜单或上下文菜单选项)链接到jar。
以这种方式运行加载项使用常见的Rhapsody虚拟机并且速度更快,但要注意! java版本取决于您正在使用的Rhapsody版本的设置和名称冲突可能是一个问题(如果您有多个加载项,其中2个同名的类,Rhapsody将只加载一个)。
有关设置帮助文件的更多信息,请访问Andy Lapping(IBM员工)的网站here。