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.
Let me know if you have problem with the image. tx in advance, Usman
|
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 <[hidden email]> 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 <[hidden email]> > > Date: Mon, Jul 23, 2012 at 5:36 AM > > Subject: Performance of text presentation in Glamour > > To: Moose-related development <[hidden email]> > > > > > > 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 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. |
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> >>> Date: Mon, Jul 23, 2012 at 5:36 AM >>> Subject: Performance of text presentation in Glamour >>> To: Moose-related development <[hidden email]> >>> >>> >>> 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 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. |
Free forum by Nabble | Edit this page |