Cool investigation, but I still do not understand what the problem is :). Does that mean that all the time is spent on drawing, or somewhere else? If it is not spent on drawing, now that we have the caching of properties, do we still need the bitmap caching?
It is spent on drawing because there is no bitmap cache.
Two solutions:
- decouple of visualization into smaller pieces. for example having a cell as a node just above the root
- wait for my coming to Lille in a couple of weeks.
Side story: I found what the problem was by defining a small profiler. The screen shot shows the activity of the MOEdge class. Frequencies of received messages by instance of MOEdge are shown in the graphic. By doing a scrolling, the curve is moving, meaning that instances of MOEdge receive message. This suggested me that the cache is not operating.
Pretty cool :).How can we use it :)?
Ok, I will package it then. Just give me a few days.
Alexandre
Cheers, Alexandre
<Screen shot 2010-06-21 at 18.52.20.png>
On 19 Jun 2010, at 08:43, Laval Jannik wrote:
On Jun 19, 2010, at 14:31 , Tudor Girba wrote:
Hi Jannik,
From this trace, it looks like the time is spent on rendering.
I understand it is still slow, but did you notice any improvement since the caching? When I tried eDSM, it looked significantly faster. I mean before I could not scroll at all, now I can even if only slowly. Could you confirm this?
My experience is not so faster: before I could scroll slowly, now I can scroll slowly. Maybe not as much as before, but the difference is not evident. I will do some experiment to see more.
Cheers, Jannik
Cheers, Doru
On 19 Jun 2010, at 14:25, Laval Jannik wrote:
Hi All,
I do a "profile all UI" and a scroll in a eDSM. The eDSM has been built on MooseModel of Moose itself and made with the 77 model packages.
I hope the result can help. Results follows:
============
Process: (40s) 211550208: nil
58.7% {12320ms} WorldState>>doOneCycleFor: 56.8% {11921ms} WorldState>>doOneCycleNowFor: |54.9% {11522ms} WorldState>>displayWorldSafely: | |54.9% {11522ms} PasteUpMorph>>displayWorld | | 54.9% {11522ms} PasteUpMorph>>privateOuterDisplayWorld | | 54.9% {11522ms} WorldState>>displayWorld:submorphs: | | 54.9% {11522ms} WorldState>>drawWorld:submorphs:invalidAreasOn: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDrawMorph: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDraw: | | 54.9% {11522ms} StandardWindow(Morph)>>fullDrawOn: | | 54.9% {11522ms} StandardWindow(Morph)>>drawSubmorphsOn: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDrawMorph: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDraw: | | 54.9% {11522ms} ScrollPane(Morph)>>fullDrawOn: | | 54.9% {11522ms} ScrollPane(Morph)>>drawSubmorphsOn: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDrawMorph: | | 54.9% {11522ms} FormCanvas(Canvas)>>fullDraw: | | 54.9% {11522ms} TransformMorph(Morph)>>fullDrawOn: | | 54.8% {11501ms} TransformMorph>>drawSubmorphsOn: | | 54.8% {11501ms} FormCanvas(Canvas)>>fullDrawMorph: | | 54.8% {11501ms} FormCanvas(Canvas)>>fullDraw: | | 54.8% {11501ms} MOCanvas(Morph)>>fullDrawOn: | | 54.8% {11501ms} FormCanvas(Canvas)>>drawMorph: | | 54.8% {11501ms} FormCanvas(Canvas)>>draw: | | 54.8% {11501ms} MOCanvas>>drawOn: | | 54.8% {11501ms} MORoot(MONode)>>displayOn: | | 30.9% {6485ms} MONode>>displayOn: | | |18.1% {3799ms} MOEdge>>displayOn: | | | |17.1% {3589ms} MOStraightLineShape>>display:on: | | | | 5.8% {1217ms} FormCanvas>>line:to:width:color: | | | | |2.9% {609ms} FormCanvas>>setFillColor: | | | | | |1.4% {294ms} GrafPort>>fillPattern: | | | | | | 1.2% {252ms} GrafPort(BitBlt)>>fillColor: | | | | |1.1% {231ms} GrafPort(BitBlt)>>drawFrom:to: | | | | 3.3% {693ms} MOStraightLineShape(MOLineShape)>>colorFor: | | | | |3.1% {651ms} MOEdge(MOGraphElement)>>cachedNamed:ifAbsentInitializeWith: | | | | | 2.7% {567ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | | | 2.1% {441ms} IdentityDictionary(Dictionary)>>at:ifAbsentPut: | | | | | 1.9% {399ms} IdentityDictionary(Dictionary)>>at:ifAbsent: | | | | | 1.2% {252ms} IdentityDictionary(HashedCollection)>>findElementOrNil: | | | | 2.5% {525ms} MOStraightLineShape(MOLineShape)>>widthFor: | | | | |2.3% {483ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | | | 1.7% {357ms} IdentityDictionary(Dictionary)>>at:ifAbsentPut: | | | | | 1.5% {315ms} IdentityDictionary(Dictionary)>>at:ifAbsent: | | | | | 1.1% {231ms} IdentityDictionary(HashedCollection)>>findElementOrNil: | | | | 2.3% {483ms} MOStraightLineShape(MOLineShape)>>getAttachPointsFor: | | | | |1.9% {399ms} MONode(MOGraphElement)>>isNotSelected | | | | | 1.3% {273ms} MONode(MOGraphElement)>>isSelected | | | | 1.1% {231ms} Point>>abs | | |12.2% {2561ms} MONode>>displayOn: | | | 8.4% {1763ms} MOEdge>>displayOn: | | | |8.0% {1679ms} MOStraightLineShape>>display:on: | | | | 2.6% {546ms} FormCanvas>>line:to:width:color: | | | | |1.3% {273ms} FormCanvas>>setFillColor: | | | | 1.5% {315ms} MOStraightLineShape(MOLineShape)>>colorFor: | | | | |1.4% {294ms} MOEdge(MOGraphElement)>>cachedNamed:ifAbsentInitializeWith: | | | | | 1.3% {273ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | | 1.3% {273ms} MOStraightLineShape(MOLineShape)>>widthFor: | | | | |1.2% {252ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | | 1.1% {231ms} MOStraightLineShape(MOLineShape)>>getAttachPointsFor: | | | 2.9% {609ms} MONode>>displayOn: | | | 2.1% {441ms} MOEdge>>displayOn: | | | 2.0% {420ms} MOStraightLineShape>>display:on: | | 23.4% {4911ms} MOEdge>>displayOn: | | 22.0% {4617ms} MOStraightLineShape>>display:on: | | 7.5% {1574ms} FormCanvas>>line:to:width:color: | | |3.5% {735ms} FormCanvas>>setFillColor: | | | |1.7% {357ms} GrafPort>>fillPattern: | | | | 1.5% {315ms} GrafPort(BitBlt)>>fillColor: | | | | 1.2% {252ms} DisplayScreen(Form)>>bitPatternFor: | | |1.4% {294ms} GrafPort(BitBlt)>>drawFrom:to: | | 3.9% {819ms} MOStraightLineShape(MOLineShape)>>colorFor: | | |3.7% {777ms} MOEdge(MOGraphElement)>>cachedNamed:ifAbsentInitializeWith: | | | 3.2% {672ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | 2.4% {504ms} IdentityDictionary(Dictionary)>>at:ifAbsentPut: | | | 2.1% {441ms} IdentityDictionary(Dictionary)>>at:ifAbsent: | | | 1.3% {273ms} IdentityDictionary(HashedCollection)>>findElementOrNil: | | 3.5% {735ms} MOStraightLineShape(MOLineShape)>>widthFor: | | |3.1% {651ms} MOEdge(MOGraphElement)>>attributeAt:ifAbsent: | | | 2.3% {483ms} IdentityDictionary(Dictionary)>>at:ifAbsentPut: | | | 2.1% {441ms} IdentityDictionary(Dictionary)>>at:ifAbsent: | | | 1.5% {315ms} IdentityDictionary(HashedCollection)>>findElementOrNil: | | | 1.0% {210ms} IdentityDictionary>>scanFor: | | 3.1% {651ms} MOStraightLineShape(MOLineShape)>>getAttachPointsFor: | | |2.6% {546ms} MONode(MOGraphElement)>>isNotSelected | | | 1.7% {357ms} MONode(MOGraphElement)>>isSelected | | 1.4% {294ms} Point>>abs ==============
Cheers, Jannik _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What we can governs what we wish."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Jannik Laval
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev