For people curious of the visual output: http://dl.dropbox.com/u/31543901/SmoothScrollingOfALargeText.png
The scrolling is amazing fast... Cheers, Alexandre On Aug 12, 2012, at 12:03 PM, Alexandre Bergel <[email protected]> wrote: > No idea if this is of any help. > Roassal seems to behave well with large files. Just do it the following > script: > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > "Preambule. It includes the initialization. " > | rawView view str | > rawView := ROView new. > view := ROMondrianViewBuilder view: rawView. > "enter your script below" > "-------------" > "-------------" > > str := ''. > 1 to: 4000 do: [ :nbLine | > str := str , nbLine printString. > 3 timesRepeat: [ str := str, ' hello world' ]. > str := str, String cr]. > > view shape label. > view node: str. > > "-------------" > "-------------" > "Below is the initiation of the menu and opening the visualization" > ROEaselMorphic new populateMenuOn: view. > view open > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > And there is absolutely no optimization. Something that I would like to > include soon, is a way to color the text. > > Cheers, > Alexandre > > > On Aug 12, 2012, at 11:22 AM, Usman Bhatti <[email protected]> wrote: > >> Hello people, >> The issue is getting a bit on our nerves so if someone can look into it >> during the next week, it'll be great. Me and Guillaume tried to have a look >> but it goes deep into the morphic layer of pharo and we do not have much >> time to allocate to this issue. >> Someone with a better knowledge of morphs can provide a quick fix? >> >> Here is a link to the image that contains the scripts in its workspace to >> analyse the problem. >> http://dl.dropbox.com/u/11804892/Moose-glam-perf.zip >> >> Let me know if you have problem with the image. >> >> tx in advance, >> Usman >> >>> ---------- Forwarded message ---------- >>> From: Usman Bhatti <[email protected]> >>> Date: Mon, Jul 23, 2012 at 5:36 AM >>> Subject: Performance of text presentation in Glamour >>> To: Moose-related development <[email protected]> >>> >>> >>> 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 >>> >>> >> >> >> >> > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
