2014-09-04 129 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