[Pharo-project] [Moose-dev] Performance of text presentation in Glamour

phil at highoctane.be phil at highoctane.be
Mon Jul 23 05:46:45 EDT 2012


Interesting issue.

Have a look in TextMorph>>newContents: aStringOrText since it behaves
differently based on what you pass.

Maybe there is a performance gain to be had there.

If the code you have is read only, then it may make sense creating a
ReadOnlyTextMorph thant will not allocate things as it happens right now
(Paragraph comes to mind...)

Phil

2012/7/23 Tudor Girba <tudor at tudorgirba.com>

> Hmm, I would like to know the answer as well.
>
> As far as I can tell, the problem is given by transforming the String
> into Text, and this is done by PluggableTextMorph.
>
> Does anyone have a clue on how to proceed when we want to display a
> large amount of text in a Morph?
>
> Cheers,
> Doru
>
>
> On Mon, Jul 23, 2012 at 5:36 AM, Usman Bhatti <usman.bhatti at gmail.com>
> wrote:
> > Hello all,
> >
> > I am working with text presentation in Glamour: the browser is used to
> show
> > the contents of code files. I noted that the time to display the
> contents of
> > a file (almost) exponentially grows with the size of the file. So,
> > performing tests on files of three different sizes, I obtain the
> following
> > response times (using Pharo profiler):
> > 1000 lines     2s
> > 2500 lines     11s
> > 3500 lines     23s.
> >
> > So thats quite lot for me where I occasionally have files with 2K lines
> and
> > I may need to browse their contents rapidly.
> >
> > Running my test script with the profiler in Pharo, I get this tree. I see
> > that the message fromString: method is sent to Text class several times
> and
> > that takes about 96% of the time (in all test cases). Any hints on how to
> > reduce the number of times the method is invoked by glamour?
> >
> > tx in advance,
> > Usman
> >
> > Trace with 3.5K lines:
> >
> >  - 23669 tallies, 23671 msec.
> >
> > **Tree**
> > --------------------------------
> > Process: (40s)  516161536: nil
> > --------------------------------
> > 100.0% {23669ms} GLMTabulator(GLMBrowser)>>openOn:with:
> >   100.0% {23667ms} GLMTabulator(GLMBrowser)>>openWith:
> >     100.0% {23667ms} GLMMorphicRenderer>>open:
> >       91.2% {21577ms} GLMMorphicWindowRenderer
> > class(GLMMorphicWidgetRenderer class)>>render:from:
> >         |91.2% {21577ms} GLMMorphicWindowRenderer>>render:
> >         |  72.3% {17122ms}
> > GLMSystemWindow(SystemWindow)>>addMorph:fullFrame:
> >         |    |72.3% {17122ms} PanelMorph>>adoptPaneColor:
> >         |    |  72.3% {17120ms} PanelMorph(Morph)>>adoptPaneColor:
> >         |    |    72.3% {17120ms} PanelMorph>>adoptPaneColor:
> >         |    |      72.3% {17120ms} PanelMorph(Morph)>>color:
> >         |    |        72.3% {17120ms} PanelMorph(Morph)>>changed
> >         |    |          72.3% {17120ms}
> PanelMorph(Morph)>>privateFullBounds
> >         |    |            72.3% {17120ms}
> PanelMorph(Morph)>>submorphBounds
> >         |    |              72.3% {17120ms}
> > LazyTabGroupMorph(Morph)>>fullBounds
> >         |    |                72.3% {17120ms}
> > LazyTabGroupMorph(Morph)>>doLayoutIn:
> >         |    |                  65.1% {15418ms} TableLayout>>layout:in:
> >         |    |                    |65.1% {15418ms}
> > TableLayout>>layoutTopToBottom:in:
> >         |    |                    |  65.1% {15418ms}
> > PanelMorph(Morph)>>layoutInBounds:
> >         |    |                    |    65.1% {15418ms}
> > PanelMorph(Morph)>>bounds:
> >         |    |                    |      65.1% {15418ms}
> > PanelMorph(Morph)>>position:
> >         |    |                    |        65.1% {15418ms}
> > PanelMorph(Morph)>>fullBounds
> >         |    |                    |          65.1% {15418ms}
> > PanelMorph(Morph)>>doLayoutIn:
> >         |    |                    |            65.1% {15418ms}
> > TableLayout>>layout:in:
> >         |    |                    |              65.1% {15418ms}
> > TableLayout>>layoutTopToBottom:in:
> >         |    |                    |                65.1% {15418ms}
> > GLMPluggableTextMorph(Morph)>>layoutInBounds:
> >         |    |                    |                  65.1% {15418ms}
> > GLMPluggableTextMorph(Morph)>>bounds:
> >         |    |                    |                    65.1% {15418ms}
> > GLMPluggableTextMorph(PluggableTextMorph)>>extent:
> >         |    |                    |                      65.1% {15414ms}
> > GLMTextMorphForEditView(TextMorph)>>extent:
> >         |    |                    |                        65.1%
> {15414ms}
> > GLMTextMorphForEditView(TextMorph)>>installEditorToReplace:
> >         |    |                    |                          65.1%
> {15414ms}
> > GLMSmalltalkEditor class(TextEditor class)>>forMorph:
> >         |    |                    |                            65.1%
> > {15414ms} GLMSmalltalkEditor(TextEditor)>>initWithMorph:
> >         |    |                    |                              65.1%
> > {15414ms} GLMSmalltalkEditor(TextEditor)>>resetState
> >         |    |                    |                                65.1%
> > {15414ms} GLMSmalltalkEditor(TextEditor)>>paragraph
> >         |    |                    |
>  65.1%
> > {15414ms} GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >         |    |                    |
>  65.1%
> > {15414ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >         |    |                    |
> > 65.1% {15414ms} Paragraph>>compose:style:from:in:
> >         |    |                    |
> > 65.1% {15414ms} Paragraph>>composeAll
> >         |    |                    |
> > 65.1% {15414ms}
> > Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >         |    |                    |
> > 65.1% {15414ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >         |    |                    |
> > 65.1% {15414ms} TextComposer>>composeAllLines
> >         |    |                    |
> > 65.1% {15414ms} TextComposer>>composeOneLine
> >         |    |                    |
> > 65.1% {15398ms} TextComposer>>composeAllRectangles:
> >         |    |                    |
> > 65.0% {15386ms} TextComposer>>composeEachRectangleIn:
> >         |    |                    |
> > 64.9% {15369ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >         |    |                    |
> > 63.9% {15116ms} Text class>>fromString:
> >         |    |                    |
> > 63.3% {14992ms} primitives
> >         |    |                  7.2% {1702ms}
> > LazyTabGroupMorph(Morph)>>privateFullBounds
> >         |    |                    7.2% {1702ms}
> > LazyTabGroupMorph(Morph)>>submorphBounds
> >         |    |                      7.2% {1702ms}
> > PanelMorph(Morph)>>fullBounds
> >         |    |                        7.2% {1702ms}
> > PanelMorph(Morph)>>doLayoutIn:
> >         |    |                          7.2% {1702ms}
> > TableLayout>>layout:in:
> >         |    |                            7.2% {1700ms}
> > TableLayout>>layoutTopToBottom:in:
> >         |    |                              7.2% {1700ms}
> > GLMPluggableTextMorph(Morph)>>layoutInBounds:
> >         |    |                                7.2% {1700ms}
> > GLMPluggableTextMorph(Morph)>>bounds:
> >         |    |                                  7.2% {1700ms}
> > GLMPluggableTextMorph(PluggableTextMorph)>>extent:
> >         |    |                                    7.2% {1696ms}
> > GLMTextMorphForEditView(TextMorph)>>extent:
> >         |    |                                      7.2% {1696ms}
> > GLMTextMorphForEditView(TextMorph)>>installEditorToReplace:
> >         |    |                                        7.2% {1696ms}
> > GLMSmalltalkEditor class(TextEditor class)>>forMorph:
> >         |    |                                          7.2% {1696ms}
> > GLMSmalltalkEditor(TextEditor)>>initWithMorph:
> >         |    |                                            7.2% {1696ms}
> > GLMSmalltalkEditor(TextEditor)>>resetState
> >         |    |                                              7.2% {1696ms}
> > GLMSmalltalkEditor(TextEditor)>>paragraph
> >         |    |                                                7.2%
> {1696ms}
> > GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >         |    |                                                  7.2%
> > {1696ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >         |    |                                                    7.2%
> > {1696ms} Paragraph>>compose:style:from:in:
> >         |    |                                                      7.2%
> > {1696ms} Paragraph>>composeAll
> >         |    |
>  7.2%
> > {1696ms} Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >         |    |
>  7.2%
> > {1696ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >         |    |
> > 7.2% {1696ms} TextComposer>>composeAllLines
> >         |    |
> > 7.2% {1696ms} TextComposer>>composeOneLine
> >         |    |
> > 7.2% {1696ms} TextComposer>>composeAllRectangles:
> >         |    |
> > 7.2% {1694ms} TextComposer>>composeEachRectangleIn:
> >         |    |
> > 7.1% {1692ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >         |    |
> > 6.9% {1629ms} Text class>>fromString:
> >         |    |
> > 6.8% {1621ms} primitives
> >         |  18.8% {4445ms}
> > GLMMorphicWindowRenderer(GLMMorphicWidgetRenderer)>>renderObject:
> >         |    18.8% {4445ms} GLMMorphicRenderer(GLMRenderer)>>render:
> >         |      18.8% {4445ms} GLMTabulator>>renderGlamorouslyOn:
> >         |        18.8% {4445ms} GLMMorphicRenderer>>renderTabulator:
> >         |          18.8% {4445ms} GLMMorphicTabulatorRenderer
> > class(GLMMorphicWidgetRenderer class)>>render:from:
> >         |            18.8% {4445ms} GLMMorphicTabulatorRenderer>>render:
> >         |              18.8% {4445ms}
> > GLMMorphicTabulatorRenderer>>renderCustomRow:ofPane:inUI:inBrowser:
> >         |                18.8% {4445ms}
> > GLMMorphicTabulatorRenderer(GLMMorphicWidgetRenderer)>>renderObject:
> >         |                  18.8% {4445ms}
> > GLMMorphicRenderer(GLMRenderer)>>render:
> >         |                    18.8% {4445ms} GLMPane>>renderGlamorouslyOn:
> >         |                      18.8% {4445ms}
> > GLMMorphicRenderer>>renderPane:
> >         |                        18.8% {4445ms} GLMMorphicPaneRenderer
> > class(GLMMorphicWidgetRenderer class)>>render:from:
> >         |                          18.8% {4445ms}
> > GLMMorphicPaneRenderer>>render:
> >         |                            18.8% {4445ms}
> > GLMMorphicPaneRenderer>>renderContainerFor:
> >         |                              18.8% {4443ms}
> > GLMMorphicPaneRenderer(GLMMorphicWidgetRenderer)>>renderWithTitleOrNil:
> >         |                                18.8% {4443ms}
> > GLMMorphicPaneRenderer(GLMMorphicWidgetRenderer)>>renderObject:
> >         |                                  18.8% {4443ms}
> > GLMMorphicRenderer(GLMRenderer)>>render:
> >         |                                    18.8% {4443ms}
> > GLMCompositePresentation>>renderGlamorouslyOn:
> >         |                                      18.8% {4443ms}
> > GLMTabbedArrangement>>renderGlamorouslyOn:
> >         |                                        18.8% {4443ms}
> > GLMMorphicRenderer>>renderTabbedCompositePresentation:
> >         |                                          18.8% {4443ms}
> > GLMMorphicTabbedRenderer class(GLMMorphicWidgetRenderer
> class)>>render:from:
> >         |                                            18.8% {4443ms}
> > GLMMorphicTabbedRenderer>>render:
> >         |                                              18.8% {4443ms}
> > GLMMorphicTabbedRenderer(GLMMorphicWidgetRenderer)>>renderWithTitleOrNil:
> >         |                                                18.8% {4441ms}
> > GLMMorphicTabbedRenderer(GLMMorphicWidgetRenderer)>>renderObject:
> >         |                                                  18.8% {4441ms}
> > GLMMorphicRenderer(GLMRenderer)>>render:
> >         |                                                    18.8%
> {4441ms}
> > GLMTextPresentation>>renderGlamorouslyOn:
> >         |                                                      18.8%
> > {4441ms} GLMMorphicRenderer>>renderTextPresentation:
> >         |                                                        18.8%
> > {4441ms} GLMMorphicTextRenderer class(GLMMorphicWidgetRenderer
> > class)>>render:from:
> >         |                                                          18.8%
> > {4441ms} GLMMorphicTextRenderer>>render:
> >         |
>  18.8%
> > {4441ms} GLMMorphicTextRenderer>>textMorphForModel:
> >         |
>  18.8%
> > {4441ms} GLMPluggableTextMorph class(PluggableTextMorph
> > class)>>on:text:accept:readSelection:menu:
> >         |
> > 18.7% {4437ms}
> >
> GLMPluggableTextMorph(PluggableTextMorph)>>on:text:accept:readSelection:menu:
> >         |
> > 18.7% {4437ms} GLMPluggableTextMorph(PluggableTextMorph)>>setText:
> >         |
> > 18.7% {4437ms} GLMPluggableTextMorph(PluggableTextMorph)>>setTextBasic:
> >         |
> > 10.2% {2407ms} GLMTextMorphForEditView(TextMorph)>>contents:wrappedTo:
> >         |
> > |10.2% {2407ms} GLMTextMorphForEditView(TextMorph)>>newContents:
> >         |
> > |  10.2% {2407ms}
> GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >         |
> > |    10.2% {2407ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >         |
> > |      10.2% {2407ms} Paragraph>>compose:style:from:in:
> >         |
> > |        10.2% {2407ms} Paragraph>>composeAll
> >         |
> > |          10.2% {2407ms}
> > Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >         |
> > |            10.2% {2407ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >         |
> > |              10.2% {2407ms} TextComposer>>composeAllLines
> >         |
> > |                10.2% {2407ms} TextComposer>>composeOneLine
> >         |
> > |                  10.2% {2403ms} TextComposer>>composeAllRectangles:
> >         |
> > |                    10.1% {2401ms} TextComposer>>composeEachRectangleIn:
> >         |
> > |                      10.1% {2397ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >         |
> > |                        9.8% {2321ms} Text class>>fromString:
> >         |
> > |                          9.7% {2299ms} primitives
> >         |
> > 8.6% {2030ms} GLMPluggableTextMorph(ScrollPane)>>setScrollDeltas
> >         |
> > 8.6% {2028ms} GLMPluggableTextMorph(ScrollPane)>>hideOrShowScrollBars
> >         |
> > 8.6% {2028ms} GLMPluggableTextMorph(ScrollPane)>>vHideOrShowScrollBar
> >         |
> > 8.6% {2028ms} GLMPluggableTextMorph(ScrollPane)>>vShowScrollBar
> >         |
> > 8.6% {2028ms} GLMPluggableTextMorph(PluggableTextMorph)>>resetExtent
> >         |
> > 8.6% {2026ms} GLMPluggableTextMorph(PluggableTextMorph)>>extent:
> >         |
> > 8.6% {2026ms} GLMTextMorphForEditView(TextMorph)>>extent:
> >         |
> > 8.6% {2026ms} GLMTextMorphForEditView(TextMorph)>>installEditorToReplace:
> >         |
> > 8.6% {2026ms} GLMSmalltalkEditor class(TextEditor class)>>forMorph:
> >         |
> > 8.6% {2026ms} GLMSmalltalkEditor(TextEditor)>>initWithMorph:
> >         |
> > 8.6% {2026ms} GLMSmalltalkEditor(TextEditor)>>resetState
> >         |
> > 8.6% {2026ms} GLMSmalltalkEditor(TextEditor)>>paragraph
> >         |
> > 8.6% {2026ms} GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >         |
> > 8.6% {2026ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >         |
> > 8.6% {2026ms} Paragraph>>compose:style:from:in:
> >         |
> > 8.6% {2026ms} Paragraph>>composeAll
> >         |
> > 8.6% {2026ms}
> Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >         |
> > 8.6% {2026ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >         |
> > 8.6% {2026ms} TextComposer>>composeAllLines
> >         |
> > 8.6% {2026ms} TextComposer>>composeOneLine
> >         |
> > 8.6% {2024ms} TextComposer>>composeAllRectangles:
> >         |
> > 8.5% {2020ms} TextComposer>>composeEachRectangleIn:
> >         |
> > 8.5% {2016ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >         |
> > 8.3% {1956ms} Text class>>fromString:
> >         |
> > 8.2% {1950ms} primitives
> >       8.8% {2090ms} GLMSystemWindow(Morph)>>openInWorld
> >         8.8% {2090ms} GLMSystemWindow(SystemWindow)>>openInWorld:
> >           8.8% {2079ms} GLMSystemWindow(Morph)>>bounds:
> >             5.2% {1229ms} GLMSystemWindow(SystemWindow)>>position:
> >               |5.2% {1229ms} GLMSystemWindow(Morph)>>position:
> >               |  5.2% {1229ms} GLMSystemWindow(Morph)>>fullBounds
> >               |    5.2% {1229ms} GLMSystemWindow(Morph)>>doLayoutIn:
> >               |      5.2% {1229ms}
> GLMSystemWindow(Morph)>>privateFullBounds
> >               |        5.2% {1229ms}
> GLMSystemWindow(Morph)>>submorphBounds
> >               |          5.2% {1229ms} PanelMorph(Morph)>>fullBounds
> >               |            5.2% {1229ms} PanelMorph(Morph)>>doLayoutIn:
> >               |              5.2% {1229ms}
> > PanelMorph(Morph)>>privateFullBounds
> >               |                5.2% {1229ms}
> > PanelMorph(Morph)>>submorphBounds
> >               |                  5.2% {1229ms}
> PanelMorph(Morph)>>fullBounds
> >               |                    5.2% {1229ms}
> > PanelMorph(Morph)>>doLayoutIn:
> >               |                      5.2% {1229ms}
> > PanelMorph(Morph)>>privateFullBounds
> >               |                        5.2% {1229ms}
> > PanelMorph(Morph)>>submorphBounds
> >               |                          5.2% {1229ms}
> > LazyTabGroupMorph(Morph)>>fullBounds
> >               |                            5.2% {1229ms}
> > LazyTabGroupMorph(Morph)>>doLayoutIn:
> >               |                              5.2% {1229ms}
> > LazyTabGroupMorph(Morph)>>privateFullBounds
> >               |                                5.2% {1229ms}
> > LazyTabGroupMorph(Morph)>>submorphBounds
> >               |                                  5.2% {1229ms}
> > PanelMorph(Morph)>>fullBounds
> >               |                                    5.2% {1229ms}
> > PanelMorph(Morph)>>doLayoutIn:
> >               |                                      5.2% {1229ms}
> > TableLayout>>layout:in:
> >               |                                        5.2% {1227ms}
> > TableLayout>>layoutTopToBottom:in:
> >               |                                          5.2% {1227ms}
> > GLMPluggableTextMorph(Morph)>>layoutInBounds:
> >               |                                            5.2% {1227ms}
> > GLMPluggableTextMorph(Morph)>>bounds:
> >               |                                              5.2%
> {1227ms}
> > GLMPluggableTextMorph(PluggableTextMorph)>>extent:
> >               |                                                5.2%
> {1225ms}
> > GLMTextMorphForEditView(TextMorph)>>extent:
> >               |                                                  5.2%
> > {1225ms} GLMTextMorphForEditView(TextMorph)>>installEditorToReplace:
> >               |                                                    5.2%
> > {1225ms} GLMSmalltalkEditor class(TextEditor class)>>forMorph:
> >               |                                                      5.2%
> > {1225ms} GLMSmalltalkEditor(TextEditor)>>initWithMorph:
> >               |
>  5.2%
> > {1225ms} GLMSmalltalkEditor(TextEditor)>>resetState
> >               |
> > 5.2% {1225ms} GLMSmalltalkEditor(TextEditor)>>paragraph
> >               |
> > 5.2% {1225ms} GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >               |
> > 5.2% {1225ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >               |
> > 5.2% {1225ms} Paragraph>>compose:style:from:in:
> >               |
> > 5.2% {1225ms} Paragraph>>composeAll
> >               |
> > 5.2% {1225ms}
> Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >               |
> > 5.2% {1225ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >               |
> > 5.2% {1225ms} TextComposer>>composeAllLines
> >               |
> > 5.2% {1225ms} TextComposer>>composeOneLine
> >               |
> > 5.2% {1225ms} TextComposer>>composeAllRectangles:
> >               |
> > 5.2% {1225ms} TextComposer>>composeEachRectangleIn:
> >               |
> > 5.2% {1225ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >               |
> > 5.0% {1187ms} Text class>>fromString:
> >               |
> > 5.0% {1177ms} primitives
> >             3.6% {850ms} GLMSystemWindow>>extent:
> >               3.6% {850ms} GLMSystemWindow(Morph)>>fullBounds
> >                 3.6% {850ms} GLMSystemWindow(Morph)>>doLayoutIn:
> >                   3.6% {850ms} GLMSystemWindow(Morph)>>privateFullBounds
> >                     3.6% {850ms} GLMSystemWindow(Morph)>>submorphBounds
> >                       3.6% {850ms} PanelMorph(Morph)>>fullBounds
> >                         3.6% {850ms} PanelMorph(Morph)>>doLayoutIn:
> >                           3.6% {850ms}
> PanelMorph(Morph)>>privateFullBounds
> >                             3.6% {850ms}
> PanelMorph(Morph)>>submorphBounds
> >                               3.6% {850ms} PanelMorph(Morph)>>fullBounds
> >                                 3.6% {850ms}
> PanelMorph(Morph)>>doLayoutIn:
> >                                   3.6% {850ms}
> > PanelMorph(Morph)>>privateFullBounds
> >                                     3.6% {850ms}
> > PanelMorph(Morph)>>submorphBounds
> >                                       3.6% {850ms}
> > LazyTabGroupMorph(Morph)>>fullBounds
> >                                         3.6% {850ms}
> > LazyTabGroupMorph(Morph)>>doLayoutIn:
> >                                           3.6% {850ms}
> > LazyTabGroupMorph(Morph)>>privateFullBounds
> >                                             3.6% {850ms}
> > LazyTabGroupMorph(Morph)>>submorphBounds
> >                                               3.6% {850ms}
> > PanelMorph(Morph)>>fullBounds
> >                                                 3.6% {850ms}
> > PanelMorph(Morph)>>doLayoutIn:
> >                                                   3.6% {850ms}
> > TableLayout>>layout:in:
> >                                                     3.6% {850ms}
> > TableLayout>>layoutTopToBottom:in:
> >                                                       3.6% {848ms}
> > GLMPluggableTextMorph(Morph)>>layoutInBounds:
> >                                                         3.6% {848ms}
> > GLMPluggableTextMorph(Morph)>>bounds:
> >                                                           3.6% {848ms}
> > GLMPluggableTextMorph(PluggableTextMorph)>>extent:
> >                                                             3.6% {848ms}
> > GLMTextMorphForEditView(TextMorph)>>extent:
> >                                                               3.6%
> {848ms}
> > GLMTextMorphForEditView(TextMorph)>>installEditorToReplace:
> >                                                                 3.6%
> {848ms}
> > GLMSmalltalkEditor class(TextEditor class)>>forMorph:
> >                                                                   3.6%
> > {848ms} GLMSmalltalkEditor(TextEditor)>>initWithMorph:
> >                                                                     3.6%
> > {848ms} GLMSmalltalkEditor(TextEditor)>>resetState
> >
> 3.6%
> > {848ms} GLMSmalltalkEditor(TextEditor)>>paragraph
> >
> 3.6%
> > {848ms} GLMTextMorphForEditView(TextMorphForEditView)>>paragraph
> >
> > 3.6% {848ms} GLMTextMorphForEditView(TextMorph)>>paragraph
> >
> > 3.6% {848ms} Paragraph>>compose:style:from:in:
> >
> > 3.6% {848ms} Paragraph>>composeAll
> >
> > 3.6% {848ms}
> Paragraph>>multiComposeLinesFrom:to:delta:into:priorLines:atY:
> >
> > 3.6% {848ms}
> >
> TextComposer>>multiComposeLinesFrom:to:delta:into:priorLi...extStyle:text:container:wantsColumnBreaks:
> >
> > 3.6% {848ms} TextComposer>>composeAllLines
> >
> > 3.6% {846ms} TextComposer>>composeOneLine
> >
> > 3.6% {846ms} TextComposer>>composeAllRectangles:
> >
> > 3.6% {844ms} TextComposer>>composeEachRectangleIn:
> >
> > 3.6% {844ms}
> >
> MultiCompositionScanner>>composeFrom:inRectangle:firstLine:leftSide:rightSide:
> >
> > 3.4% {807ms} Text class>>fromString:
> >
> > 3.4% {802ms} primitives
> > **Leaves**
> > 96.5% {22842ms} Text class>>fromString:
> >
> > **Memory**
> > old -4,940,088 bytes
> > young +69,144 bytes
> > used -4,870,944 bytes
> > free -1,051,976 bytes
> >
> > **GCs**
> > full 3 totalling 1,428ms (6.0% uptime), avg 476.0ms
> > incr 16030 totalling 15,162ms (64.0% uptime), avg 1.0ms
> > tenures 42 (avg 381 GCs/tenure)
> > root table 0 overflows
> >
> >
> > _______________________________________________
> > Moose-dev mailing list
> > Moose-dev at iam.unibe.ch
> > https://www.iam.unibe.ch/mailman/listinfo/moose-dev
> >
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
>


-- 
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:
phil at highoctane.be| Web:
http://philippeback.eu | Blog: http://philippeback.be

High Octane SPRL
rue cour Boisacq 101
1301 Bierges
Belgium
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20120723/e2f0916e/attachment-0001.html>


More information about the Pharo-dev mailing list