I spent some time on understand what's going on with your code.
I have an answer, but no solution yet.
Clearly, MessageTally is of little help to understand why eDSM is slow. The bitmap caching
is not effective in your case, which is one big reason of the slowdown. The reason is that
your Mondrian view is defined as one unique node. This is not a problem, but your node is
really big. A square of more than 8000 pixels. 8000 x 8000 x 32 = 2,048,000,000. A bitmap
of that size weights 2Gb. Which is a bit a lot (expression used in Nice (FR) to say it is
a lot).
One idea, is to use the bitmap cache for inner nodes. However, probably due to my lake of
knowledge of Morphic, I cannot make it work the way I want.
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.
Cheers,
Alexandre
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(a)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(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
---
Jannik Laval
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev