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

Reply via email to