Version: (using KDE Devel) Installed from: Compiled sources Loading a model containing the main classes of ACE (http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/) takes in excess of 20 minutes on a 1GHz Pentium Linux machine. This is due to the new xmi.id resolution pass which was added for loading foreign XMI files. We should look into how to make type resolution scale well (e.g. use a dictionary of pointers to unresolved references which is indexed by xmi.id instead of the current linear search.)
CVS commit by okellogg: UMLListView::{slotObjectCreated,childObjectAdded}: It turns out the slowdown was caused by calling ensureItemVisible() during UMLDoc::resolveTypes(). BUG:101148 M +7 -3 umllistview.cpp 1.150 M +4 -1 umlobject.cpp 1.71 M +5 -0 umlobject.h 1.51 --- kdesdk/umbrello/umbrello/umllistview.cpp #1.149:1.150 @@ -597,4 +597,6 @@ void UMLListView::slotObjectCreated(UMLO connectNewObjectsSlots(object); newItem = new UMLListViewItem(parentItem, object->getName(), convert_OT_LVT(type), object); + if (m_doc->loading()) + return; ensureItemVisible(newItem); newItem->setOpen(true); @@ -686,8 +688,10 @@ void UMLListView::childObjectAdded(UMLOb UMLListViewItem *newItem = new UMLListViewItem(parentItem, text, convert_OT_LVT(obj->getBaseType()), obj); + if (! m_doc->loading()) { ensureItemVisible(newItem); clearSelection(); setSelected(newItem, true); } + } connectNewObjectsSlots(obj); } --- kdesdk/umbrello/umbrello/umlobject.cpp #1.70:1.71 @@ -63,4 +63,5 @@ void UMLObject::init() { m_bStatic = false; m_bInPaste = false; + m_bCreationWasSignalled = false; m_pSecondary = NULL; } @@ -328,9 +329,11 @@ QString UMLObject::getSecondaryId() cons void UMLObject::maybeSignalObjectCreated() { - if (m_BaseType != Uml::ot_Stereotype && + if (!m_bCreationWasSignalled && + m_BaseType != Uml::ot_Stereotype && m_BaseType != Uml::ot_Association && m_BaseType != Uml::ot_Role) { UMLDoc* umldoc = UMLApp::app()->getDocument(); umldoc->signalUMLObjectCreated(this); + m_bCreationWasSignalled = true; } } --- kdesdk/umbrello/umbrello/umlobject.h #1.50:1.51 @@ -414,4 +414,9 @@ protected: /** + * Auxiliary to maybeSignalObjectCreated(). + */ + bool m_bCreationWasSignalled; + + /** * Pointer to an associated object. * Only a few of the classes inheriting from UMLObject use this.