Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
July 2012
- 77 participants
- 1070 messages
Re: [Pharo-project] [Moose-dev] Performance of text presentation in Glamour
by phil@highoctane.be
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(a)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(a)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(a)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(a)highoctane.be| Web:
http://philippeback.eu | Blog: http://philippeback.be
High Octane SPRL
rue cour Boisacq 101
1301 Bierges
Belgium
July 23, 2012
[Pharo-project] Problem/ommission in Pharo 2.0?
by Friedrich Dominicus
I don't know if that really is a problem. Hoewever
in MCCacheRepository there is the default class side message missing.
This is needed to load I guess any Metacello package.
Regards
Friedrich
July 23, 2012
Re: [Pharo-project] Change in MCCacheRepository that affects Metacello loading
by Stéphane Ducasse
may be we should rollback this changes because it is not mandatory.
Stef
On Jul 23, 2012, at 10:14 AM, Mariano Martinez Peck wrote:
> Hi Dale. http://code.google.com/p/pharo/issues/detail?id=6405
> renames MCCacheRepository #default to #uniqueInstance. Therefore, to be able to bootstrap Metacello we need to change:
>
> ConfigurationOfMetacello class >> bootstrapPackage: aString from: aPath
> | repository version |
> repository := (MCCacheRepository uniqueInstance includesVersionNamed: aString)
> ifTrue: [MCCacheRepository uniqueInstance]
> ifFalse: [MCHttpRepository
> location: aPath
> user: ''
> password: ''].
> repository
> versionReaderForFileNamed: aString , '.mcz'
> do: [:reader |
> version := reader version.
> version load.
> version workingCopy repositoryGroup addRepository: repository]
>
> I could commit, but I don't want to break Metacello loading in other images and I don't know how do you handle these cases.
>
> Thanks,
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
July 23, 2012
Re: [Pharo-project] how to find the memory size of an object graph
by Stéphane Ducasse
On Jul 23, 2012, at 9:55 AM, Mariano Martinez Peck wrote:
>
>
> On Mon, Jul 23, 2012 at 9:45 AM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> I have some problems with memory consumption in a Moose model.
> However, I do not quite know where the memory is spent.
>
>
> Even if it is not 100% about YOUR object graph, maybe space tally helps you?
> Once you have the graph, evaluate:
>
> SpaceTally new printSpaceAnalysis
>
> and then see the file 'STspace.text'. That may give you an idea of what is going on.
>
>
> To solve this, I would need to know the amount of space occupied by
> the objects (and all the referenced objects subgraphs).
>
> I found Object>>sizeInMemory, but this only shows the size of the
> current object. What I would need is a graph traversal that does not
> break on cyclic graphs, and that accumulates the size of the objects.
>
>
> Exactly. Notice also that #sizeInMemory is buggy since it does not take into account padding: 'a' sizeInMemory -> 5 but it actually should be 8.
> There is a method in the VM which answers the exact size...I wonder why we cannot expose that as a primitiveâ¦.
Mariano can you open a specific thread on this point because we need better tools.
>
>
> I thought of using Fuel for this. I tried to follow the instructions from here:
> http://rmod.lille.inria.fr/web/pier/software/Fuel/Version1.8/Documentation/…
>
> and work with the debug facilities:
> (ConfigurationOfFuel project version: '1.8') load: #(FuelDebug).
>
> For small examples, it seems to work fine:
> FLAnalyzer newDefault setDebug; analysisFor: #((1) (2) (3) (4))
>
> However, for larger examples, the process takes forever.
>
>
> Yes, it is not useful, because Fuel format has nothing to do.
>
>
> Is there another way of approaching this problem?
>
>
> Here I attach a quick/simple graph traversal.
> Just subclass and implement #doInterception:
>
> Cheers,
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
> <GraphTraverser.st>
July 23, 2012
Re: [Pharo-project] [Moose-dev] Performance of text presentation in Glamour
by Tudor Girba
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(a)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(a)iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
--
www.tudorgirba.com
"Every thing has its own flow"
July 23, 2012
Re: [Pharo-project] fuelized test failures
by Pavel Krivanek
in the Workspace of the job
-- Pavel
On Mon, Jul 23, 2012 at 10:22 AM, Mariano Martinez Peck
<marianopeck(a)gmail.com> wrote:
>
>
> On Fri, Jul 20, 2012 at 6:09 PM, Camillo Bruni <camillobruni(a)gmail.com>
> wrote:
>>
>> From now on all the test-failures are serialized on the build server.
>>
>> This allows us to quickly find the cause of a failing test:
>> - download the .fuel file for the failing test
>
>
>
> Where can I find these .fuel of the tests?
>
>
>>
>> - materialize the .fuel in the image and debug the code
>> | aContext |
>> aContext := FLMaterializer materializeFromFileNamed:
>> 'PharoDebug.fuel'.
>> Debugger openContext: aContext label: 'This is the new debugger!'
>> contents: nil
>>
>> The serialized stack trace is very limited (generally only 2 contexts) but
>> they
>> are enough to get a decent view on what the variables are
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
July 23, 2012
Re: [Pharo-project] fuelized test failures
by Mariano Martinez Peck
On Fri, Jul 20, 2012 at 6:09 PM, Camillo Bruni <camillobruni(a)gmail.com>wrote:
> From now on all the test-failures are serialized on the build server.
>
> This allows us to quickly find the cause of a failing test:
> - download the .fuel file for the failing test
>
Where can I find these .fuel of the tests?
> - materialize the .fuel in the image and debug the code
> | aContext |
> aContext := FLMaterializer materializeFromFileNamed:
> 'PharoDebug.fuel'.
> Debugger openContext: aContext label: 'This is the new debugger!'
> contents: nil
>
> The serialized stack trace is very limited (generally only 2 contexts) but
> they
> are enough to get a decent view on what the variables are
>
--
Mariano
http://marianopeck.wordpress.com
July 23, 2012
[Pharo-project] Change in MCCacheRepository that affects Metacello loading
by Mariano Martinez Peck
Hi Dale. http://code.google.com/p/pharo/issues/detail?id=6405
renames MCCacheRepository #default to #uniqueInstance. Therefore, to be
able to bootstrap Metacello we need to change:
ConfigurationOfMetacello class >> bootstrapPackage: aString from: aPath
| repository version |
repository := (*MCCacheRepository uniqueInstance* includesVersionNamed:
aString)
ifTrue: [*MCCacheRepository uniqueInstance*]
ifFalse: [MCHttpRepository
location: aPath
user: ''
password: ''].
repository
versionReaderForFileNamed: aString , '.mcz'
do: [:reader |
version := reader version.
version load.
version workingCopy repositoryGroup addRepository: repository]
I could commit, but I don't want to break Metacello loading in other images
and I don't know how do you handle these cases.
Thanks,
--
Mariano
http://marianopeck.wordpress.com
July 23, 2012
Re: [Pharo-project] how to find the memory size of an object graph
by Mariano Martinez Peck
On Mon, Jul 23, 2012 at 9:45 AM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> I have some problems with memory consumption in a Moose model.
> However, I do not quite know where the memory is spent.
>
>
Even if it is not 100% about YOUR object graph, maybe space tally helps you?
Once you have the graph, evaluate:
SpaceTally new printSpaceAnalysis
and then see the file 'STspace.text'. That may give you an idea of what is
going on.
> To solve this, I would need to know the amount of space occupied by
> the objects (and all the referenced objects subgraphs).
>
> I found Object>>sizeInMemory, but this only shows the size of the
> current object. What I would need is a graph traversal that does not
> break on cyclic graphs, and that accumulates the size of the objects.
>
Exactly. Notice also that #sizeInMemory is buggy since it does not take
into account padding: 'a' sizeInMemory -> 5 but it actually should be 8.
There is a method in the VM which answers the exact size...I wonder why we
cannot expose that as a primitive....
>
> I thought of using Fuel for this. I tried to follow the instructions from
> here:
>
> http://rmod.lille.inria.fr/web/pier/software/Fuel/Version1.8/Documentation/…
>
> and work with the debug facilities:
> (ConfigurationOfFuel project version: '1.8') load: #(FuelDebug).
>
> For small examples, it seems to work fine:
> FLAnalyzer newDefault setDebug; analysisFor: #((1) (2) (3) (4))
>
> However, for larger examples, the process takes forever.
>
>
Yes, it is not useful, because Fuel format has nothing to do.
> Is there another way of approaching this problem?
>
>
Here I attach a quick/simple graph traversal.
Just subclass and implement #doInterception:
Cheers,
--
Mariano
http://marianopeck.wordpress.com
July 23, 2012
[Pharo-project] how to find the memory size of an object graph
by Tudor Girba
Hi,
I have some problems with memory consumption in a Moose model.
However, I do not quite know where the memory is spent.
To solve this, I would need to know the amount of space occupied by
the objects (and all the referenced objects subgraphs).
I found Object>>sizeInMemory, but this only shows the size of the
current object. What I would need is a graph traversal that does not
break on cyclic graphs, and that accumulates the size of the objects.
I thought of using Fuel for this. I tried to follow the instructions from here:
http://rmod.lille.inria.fr/web/pier/software/Fuel/Version1.8/Documentation/…
and work with the debug facilities:
(ConfigurationOfFuel project version: '1.8') load: #(FuelDebug).
For small examples, it seems to work fine:
FLAnalyzer newDefault setDebug; analysisFor: #((1) (2) (3) (4))
However, for larger examples, the process takes forever.
Is there another way of approaching this problem?
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
July 23, 2012