nullPointer a écrit : > I´m continue working on that widget. Now works in design time, integrated in > UIBuilder tool. > > Adding rows -> > http://www.youtube.com/watch?v=Dt0yz0JyBCg > > Master detail -> > http://www.youtube.com/watch?v=FTW9Byqdgbk > very cool work > My main problem now is the speed. Is very very slow; one minute is needed > for load 5000 rows (!!!) > well, not so bad! 5000 rows means a lot of data, maybe Morphic is not the good ui framework for applications that manage such amount of data, at least in its current state. It seems that you're using the stepping mechanism, it is time consuming. also the layout managing and invalid areas redrawing. Cheers Alain > With MessageTally I see the next response... > > > > - 81732 tallies, 82014 msec. > > **Tree** > -------------------------------- > Process: (40s) 3296: nil > -------------------------------- > 50.3% {41253ms} CLGrid>>dataSource: > 44.5% {36496ms} CLGrid>>addRow > |21.7% {17797ms} CLScrollPanelContainer(Morph)>>addMorphBack: > | |21.7% {17797ms} > CLScrollPanelContainer(CLPanel)>>privateAddMorph:atIndex: > | | 21.6% {17715ms} > CLScrollPanelContainer(Morph)>>privateAddMorph:atIndex: > | | 13.8% {11318ms} > CLScrollPanelContainer(Morph)>>privateInvalidateMorph: > | | |13.5% {11072ms} CLGridRow(Morph)>>fullBounds > | | | 13.5% {11072ms} CLGridRow(Morph)>>doLayoutIn: > | | | 8.6% {7053ms} TableLayout>>layout:in: > | | | |8.6% {7053ms} TableLayout>>layoutLeftToRight:in: > | | | | 5.8% {4757ms} CLGridCell(Morph)>>layoutInBounds: > | | | | |5.3% {4347ms} CLGridCell(Morph)>>bounds: > | | | | | 2.6% {2132ms} CLGridCell(Morph)>>position: > | | | | | |1.5% {1230ms} > CLGridCell(Morph)>>invalidRect: > | | | | | | 1.5% {1230ms} > CLGridCell(Morph)>>invalidRect:from: > | | | | | | 1.5% {1230ms} > CLGridRow(Morph)>>invalidRect:from: > | | | | | | 1.1% {902ms} > CLScrollPanelContainer(Morph)>>invalidRect:from: > | | | | | 2.6% {2132ms} CLGridCell>>extent: > | | | | | 2.4% {1968ms} CLGridCell(Morph)>>extent: > | | | | | 1.6% {1312ms} CLGridCell(Morph)>>changed > | | | | 2.7% {2214ms} CLGridCell(Morph)>>minExtent > | | | 4.2% {3445ms} CLGridRow(Morph)>>adjustLayoutBounds > | | | 3.9% {3199ms} CLGridRow(Morph)>>submorphBounds > | | | 3.9% {3199ms} CLGridCell(Morph)>>fullBounds > | | | 3.6% {2953ms} CLGridCell(Morph)>>doLayoutIn: > | | | 2.0% {1640ms} TableLayout>>layout:in: > | | | 1.8% {1476ms} > TableLayout>>layoutTopToBottom:in: > | | 7.7% {6315ms} CLGridRow(Morph)>>intoWorld: > | | 7.7% {6315ms} CLGridCell(Morph)>>intoWorld: > | | 7.6% {6233ms} CLCheckButton(Morph)>>intoWorld: > | | 7.4% {6069ms} PasteUpMorph>>startStepping: > | | 7.4% {6069ms} > PasteUpMorph>>startStepping:at:selector:arguments:stepTime: > | | 7.4% {6069ms} > WorldState>>startStepping:at:selector:arguments:stepTime: > | | 7.4% {6069ms} WorldState>>stopStepping:selector: > | | 5.8% {4757ms} > Heap(SequenceableCollection)>>select: > | | |3.9% {3199ms} Heap>>at: > | | |1.8% {1476ms} primitives > | | 1.6% {1312ms} primitives > |14.8% {12138ms} CLGridRow>>buildCellsStructureFrom: > | |14.8% {12138ms} CLGridRow>>addCell: > | | 14.8% {12138ms} CLGridRow>>pvtAddCell:ofType: > | | 5.7% {4675ms} CLGridCell>>setColumn: > | | |5.7% {4675ms} CLGridCell>>pvtBuildValueControl > | | | 3.0% {2460ms} CLLabel class(Behavior)>>new > | | | 2.0% {1640ms} > CLCheckButton(CheckboxButtonMorph)>>initialize > | | | |1.1% {902ms} CLCheckButton>>enabled: > | | | | 1.1% {902ms} > CLCheckButton(CheckboxButtonMorph)>>enabled: > | | | 1.0% {820ms} CLLabel>>initialize > | | 4.0% {3281ms} CLGridCell class(Behavior)>>new > | | |4.0% {3281ms} CLGridCell>>initialize > | | 2.4% {1968ms} CLGridCell(Morph)>>width: > | | |2.4% {1968ms} CLGridCell>>extent: > | | | 2.1% {1722ms} CLGridCell(Morph)>>extent: > | | | 1.9% {1558ms} CLGridCell(Morph)>>changed > | | | 1.4% {1148ms} CLGridCell(Morph)>>privateFullBounds > | | 1.4% {1148ms} CLGridCell(Morph)>>borderColor: > | | 1.3% {1066ms} CLGridCell(Morph)>>changed > | | 1.3% {1066ms} CLGridCell(Morph)>>privateFullBounds > |5.4% {4429ms} CLGridRow(CLPanel)>>color: > | |5.4% {4429ms} CLGridRow(Morph)>>color: > | | 5.4% {4429ms} CLGridRow(Morph)>>changed > | | 5.4% {4429ms} CLGridRow(Morph)>>privateFullBounds > | | 5.2% {4265ms} CLGridRow(Morph)>>submorphBounds > | | 5.2% {4265ms} CLGridCell(Morph)>>fullBounds > | | 4.8% {3937ms} CLGridCell(Morph)>>doLayoutIn: > | | 3.3% {2706ms} TableLayout>>layout:in: > | | 3.1% {2542ms} TableLayout>>layoutTopToBottom:in: > | | 1.8% {1476ms} CLLabel(Morph)>>layoutInBounds: > |1.3% {1066ms} CLGridRow class(Behavior)>>new > | 1.3% {1066ms} CLGridRow>>initialize > 5.6% {4593ms} CLGridRow>>listObject: > 5.4% {4429ms} CLGridCell>>value: > 4.3% {3527ms} CLLabel>>value: > |4.3% {3527ms} CLLabel>>text: > | 4.3% {3527ms} CLLabel(StringMorph)>>contents: > | 4.3% {3527ms} CLLabel(StringMorph)>>fitContents > | 4.1% {3363ms} CLLabel>>extent: > | 4.0% {3281ms} CLLabel(Morph)>>extent: > | 3.4% {2788ms} CLLabel(Morph)>>changed > | 3.2% {2624ms} CLLabel(Morph)>>invalidRect: > | 3.2% {2624ms} CLLabel(Morph)>>invalidRect:from: > | 3.1% {2542ms} CLGridCell(Morph)>>invalidRect:from: > | 2.7% {2214ms} CLGridRow(Morph)>>invalidRect:from: > | 2.4% {1968ms} > CLScrollPanelContainer(Morph)>>invalidRect:from: > | 2.2% {1804ms} > TransformMorph>>invalidRect:from: > | 1.4% {1148ms} > TransformMorph(Morph)>>invalidRect:from: > | 1.4% {1148ms} > CLScrollpanel(Morph)>>invalidRect:from: > | 1.2% {984ms} > CLGrid(Morph)>>invalidRect:from: > 1.1% {902ms} CLCheckButton>>value: > 1.1% {902ms} CLCheckButton(CheckboxButtonMorph)>>state: > 30.5% {25014ms} CLGrid(Morph)>>openInWindowLabeled: > 30.5% {25014ms} CLGrid(Morph)>>openInWindowLabeled:inWorld: > 15.5% {12712ms} PasteUpMorph(Morph)>>addMorph: > |15.5% {12712ms} PasteUpMorph>>addMorphFront: > | 15.5% {12712ms} PasteUpMorph(Morph)>>addMorphInFrontOfLayer: > | 15.5% {12712ms} PasteUpMorph(Morph)>>addMorph:inFrontOf: > | 15.5% {12712ms} PasteUpMorph(Morph)>>privateAddMorph:atIndex: > | 15.5% {12712ms} SystemWindow(Morph)>>intoWorld: > | 15.5% {12712ms} CLGrid(Morph)>>intoWorld: > | 15.5% {12712ms} CLGridRowHeader(Morph)>>intoWorld: > | 15.5% {12712ms} CLGridCellHeader(Morph)>>intoWorld: > | 15.5% {12712ms} > CLScrollPanelContainer(Morph)>>intoWorld: > | 15.5% {12712ms} CLGridRow(Morph)>>intoWorld: > | 15.4% {12630ms} CLGridCell(Morph)>>intoWorld: > | 15.4% {12630ms} > CLCheckButton(Morph)>>intoWorld: > | 15.3% {12548ms} PasteUpMorph>>startStepping: > | 15.3% {12548ms} > PasteUpMorph>>startStepping:at:selector:arguments:stepTime: > | 15.3% {12548ms} > WorldState>>startStepping:at:selector:arguments:stepTime: > | 15.3% {12548ms} > WorldState>>stopStepping:selector: > | 9.1% {7463ms} > Heap(SequenceableCollection)>>select: > | |6.4% {5249ms} Heap>>at: > | |2.7% {2214ms} primitives > | 3.4% {2788ms} > Heap(Collection)>>removeAll: > | |3.4% {2788ms} > Heap(Collection)>>remove: > | | 3.4% {2788ms} > Heap>>remove:ifAbsent: > | | 1.7% {1394ms} > StepMessage(MessageSend)>>= > | | |1.7% {1394ms} primitives > | | 1.7% {1394ms} primitives > | 2.8% {2296ms} primitives > 14.8% {12138ms} PasteUpMorph>>startSteppingSubmorphsOf: > 14.6% {11974ms} CLCheckButton(Morph)>>arrangeToStartSteppingIn: > 14.4% {11810ms} PasteUpMorph>>startStepping: > 14.4% {11810ms} > PasteUpMorph>>startStepping:at:selector:arguments:stepTime: > 14.4% {11810ms} > WorldState>>startStepping:at:selector:arguments:stepTime: > 14.4% {11810ms} WorldState>>stopStepping:selector: > 9.1% {7463ms} Heap(SequenceableCollection)>>select: > |6.5% {5331ms} Heap>>at: > |2.5% {2050ms} primitives > 2.9% {2378ms} Heap(Collection)>>removeAll: > |2.9% {2378ms} Heap(Collection)>>remove: > | 2.9% {2378ms} Heap>>remove:ifAbsent: > | 1.5% {1230ms} primitives > | 1.4% {1148ms} StepMessage(MessageSend)>>= > 2.4% {1968ms} primitives > 7.9% {6479ms} CLGrid>>relocatePanels > 7.9% {6479ms} CLScrollPanelContainer(Morph)>>position: > 7.4% {6069ms} CLScrollPanelContainer(Morph)>>fullBounds > 7.4% {6069ms} CLScrollPanelContainer(Morph)>>doLayoutIn: > 7.4% {6069ms} TableLayout>>layout:in: > 7.4% {6069ms} TableLayout>>layoutTopToBottom:in: > 4.3% {3527ms} CLGridRow(Morph)>>minExtent > |4.1% {3363ms} TableLayout>>minExtentOf:in: > | 4.1% {3363ms} TableLayout>>minExtentHorizontal: > | 4.0% {3281ms} CLGridCell(Morph)>>minExtent > | 1.9% {1558ms} CLGridCell(Morph)>>fullBounds > | |1.8% {1476ms} CLGridCell(Morph)>>doLayoutIn: > | 1.3% {1066ms} TableLayout>>minExtentOf:in: > | 1.2% {984ms} TableLayout>>minExtentVertical: > | 1.1% {902ms} CLLabel(Morph)>>minExtent > 3.1% {2542ms} CLGridRow(Morph)>>layoutInBounds: > 2.4% {1968ms} CLGridRow(Morph)>>doLayoutIn: > 1.9% {1558ms} TableLayout>>layout:in: > 1.9% {1558ms} TableLayout>>layoutLeftToRight:in: > 1.7% {1394ms} CLGridCell(Morph)>>minExtent > > **Leaves** > 16.8% {13778ms} Heap>>at: > 7.0% {5741ms} WeakActionSequence(SequenceableCollection)>>select: > 6.9% {5659ms} Array(SequenceableCollection)>>identityIndexOf:ifAbsent: > 6.8% {5577ms} WorldState>>stopStepping:selector: > 3.7% {3035ms} Array(SequenceableCollection)>>identityIndexOf: > 3.3% {2706ms} SmallIdentityDictionary(SmallDictionary)>>at:ifAbsent: > 3.3% {2706ms} MorphExtension>>valueOfProperty:ifAbsent: > 3.2% {2624ms} Heap>>remove:ifAbsent: > 3.1% {2542ms} StepMessage(MessageSend)>>= > 2.4% {1968ms} SmallIdentityDictionary>>findIndexForKey: > 1.7% {1394ms} Rectangle>>setOrigin:corner: > 1.6% {1312ms} Point>>+ > 1.6% {1312ms} Rectangle class>>origin:corner: > 1.4% {1148ms} RectangleMorph(Morph)>>valueOfProperty:ifAbsent: > 1.3% {1066ms} Point>>- > > **Memory** > old +20,789,788 bytes > young +112,272 bytes > used +20,902,060 bytes > free -1,073,416 bytes > > **GCs** > full 2 totalling 495ms (1.0% uptime), avg 248.0ms > incr 45275 totalling 15,800ms (19.0% uptime), avg 0.0ms > tenures 715 (avg 63 GCs/tenure) > root table 0 overflows > > Perhaps I don´t interpret correctly that result. I understand than the more > slow is the UI actions, when I add the cells in each row ( > #buildCellsStructure ). Exists some way for accelerate the UI moves? Is > possible stop the morphs events and only restart when is all builded? > > I did try reduce the slow sensation loading the rows in another thread > (#fork), but the UI crushes, and appears a red rectangle with a yellow > cross. Exists some way for use work with UI in another threads? > > > Regards > >
_______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
