Плагин Rhapsody Java API, очень медленное выполнение

Я использовал 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() тоже очень медленная. Любое предложение?


person SteliosGan    schedule 04.09.2014    source источник
comment
вы открываете свои проекты: со всеми сабюнитами + загрузка по запросу?   -  person Centimane    schedule 07.10.2014


Ответы (1)


По какой-то причине надстройки Rhapsody работают намного (намного) быстрее, если они запущены на внутренней виртуальной машине Rhapsody.

Для этого скомпилируйте свой java в .jar и настройте свою модель с помощью вспомогательного файла, чтобы связать триггер Rhapsody (обычно это меню инструментов или пункт контекстного меню) с jar.

Запуск надстроек таким образом использует обычную виртуальную машину Rhapsody и работает быстрее, но будьте осторожны! Версия Java зависит от того, для какой версии Rhapsody вы используете, и конфликты имен могут быть проблемой (если у вас есть несколько надстроек с двумя классами с одинаковыми именами, Rhapsody загрузится только в одном).

Дополнительную информацию о настройке вспомогательных файлов можно найти на веб-сайте Энди Лаппинга (сотрудника IBM) здесь.

person Tom Higson    schedule 21.04.2015