0

我使用 Rhapsody Java API 为我的 rhapsody 项目创建了一个插件。我的问题是它非常慢。我有以下功能:

    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()函数也非常慢。有什么建议吗?

4

1 回答 1

0

出于某种原因,当在内部 Rhapsody 虚拟机中运行时,Rhapsody 插件的运行速度要快得多。

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

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

更多关于设置帮助文件的信息可以在 Andy Lapping(IBM 员工)的网站上找到

于 2015-04-21T15:33:17.847 回答