Poor TTF font performance on Linux with newer VM
Tony Garnock-Jones
tonyg at lshift.net
Thu May 18 10:53:55 UTC 2006
Thanks for that - I had suspected it might be a plugin. I've followed
your suggestion, and the plugin list is almost identical except for
OSProcess and FFI plugins.
I've just run "MessageTally spyOn: [3 timesRepeat: [self nextPage]]" on
my BookMorph. The two results are dramatically different: on the 3.7 VM,
477ms for the whole thing; on the 3.9 VM, 50354ms for the whole thing! A
factor of 100x slower.
I've attached the traces, in case they're meaningful at a glance to
anyone reading.
Regards,
Tony
David T. Lewis wrote:
> On Thu, May 18, 2006 at 10:40:58AM +0100, Tony Garnock-Jones wrote:
>> Hi all,
>>
>> I have recently been building VMs on Linux (to fix a bug in the
>> FilePlugin), and with my shiny new patched 3.9-7 VM (build from the head
>> of svn plus my patch) the TTF font performance (Bitstream Vera Sans) has
>> dropped through the floor.
>>
>> I'm using a BookMorph with lots of Bitstream text morphs, and switching
>> pages causes the CPU to peg at 100% in Squeak for several seconds.
>>
>> Switching back to a 3.7-7 VM causes the font rendering to run at normal
>> speed again - even when I take a 3.7-7 source tree, patch it to fix the
>> FilePlugin bug, and recompile.
>>
>> So - it looks like something between 3.7-7 and 3.9-7 causes the TTF
>> performance to bottom out. What could it be? Any ideas?
>>
>> Tony
>>
>> PS. all this is on Debian, gcc 4.0.4, and I could be wrong about
>> identifying font rendering as the problem area. I know Squeak suddenly
>> seems to take a looooong time to do anything TTF related - strike fonts
>> seem to run at normal speed.
>
> I don't know the answer to your question, but from what you're
> describing I might guess the TTF font rendering uses some plugin
> that is missing from your new VM. Check "Smalltalk listLoadedModules"
> on your 3.7-7 VM (after doing something with your BookMorph) and
> see if it shows some plugin that you have not included in your
> 3.9-7 build.
>
> Dave
>
>
>
--
[][][] Tony Garnock-Jones | Mob: +44 (0)7905 974 211
[][] LShift Ltd | Tel: +44 (0)20 7729 7060
[] [] http://www.lshift.net/ | Email: tonyg at lshift.net
-------------- next part --------------
- 461 tallies, 477 msec.
**Tree**
100.0% {477ms} BookMorph>>nextPage
100.0% {477ms} BookMorph>>goToPage:
100.0% {477ms} BookMorph>>goToPage:transitionSpec:
100.0% {477ms} BookMorph>>goToPageMorph:transitionSpec:
57.7% {275ms} PasteUpMorph>>displayWorld
|57.7% {275ms} PasteUpMorph>>privateOuterDisplayWorld
| 57.7% {275ms} WorldState>>displayWorld:submorphs:
| 57.7% {275ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
| 57.7% {275ms} FormCanvas(Canvas)>>fullDrawMorph:
| 57.7% {275ms} FormCanvas(Canvas)>>fullDraw:
| 57.7% {275ms} BookMorph(Morph)>>fullDrawOn:
| 57.7% {275ms} BookMorph(Morph)>>drawSubmorphsOn:
| 57.7% {275ms} FormCanvas(Canvas)>>fullDrawMorph:
| 57.7% {275ms} FormCanvas(Canvas)>>fullDraw:
| 57.7% {275ms} PasteUpMorph(Morph)>>fullDrawOn:
| 52.3% {249ms} PasteUpMorph>>drawSubmorphsOn:
| |52.3% {249ms} FormCanvas(Canvas)>>fullDrawMorph:
[52.3% {249ms} FormCanvas(Canvas)>>fullDraw:
[ 52.3% {249ms} TextMorph(Morph)>>fullDrawOn:
[ 52.3% {249ms} FormCanvas(Canvas)>>drawMorph:
[ 52.3% {249ms} FormCanvas(Canvas)>>draw:
[ 52.3% {249ms} TextMorph>>drawOn:
[ 30.6% {146ms} FormCanvas>>paragraph:bounds:color:
[ |30.6% {146ms} MultiNewParagraph>>displayOn:using:at:
[ | 30.6% {146ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
[ | 27.1% {129ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
[ | 19.3% {92ms} TTCFont>>glyphInfoOf:into:
[ | |11.3% {54ms} TTCFont>>ascentOf:
[ | | |11.3% {54ms} TTCFont>>ascent
[ | | | 6.7% {32ms} TTCFont>>pixelSize
[ | | | |6.7% {32ms} TextStyle class>>pointsToPixels:
[ | | | | 6.7% {32ms} TextStyle class>>pixelsPerInch
[ | | | | 6.7% {32ms} Dictionary>>at:ifAbsentPut:
[ | | | | 5.2% {25ms} Dictionary>>at:ifAbsent:
[[3.0% {14ms} primitives
[[2.2% {10ms} Dictionary(Set)>>findElementOrNil:
[[ 2.2% {10ms} Dictionary>>scanFor:
[[ 2.2% {10ms} ByteSymbol(String)>>hash
[ | | | 4.6% {22ms} Float(Number)>>//
[ | | | 3.0% {14ms} primitives
[ | |8.0% {38ms} TTCFont>>formOf:
[ | | 8.0% {38ms} TTCFont>>computeForm:
[ | | 6.3% {30ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ | | 6.3% {30ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ | | 6.3% {30ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[ | | 5.0% {24ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[ | | 3.0% {14ms} BalloonCanvas>>ensuredEngine
[[3.0% {14ms} BalloonEngine class(Behavior)>>new
[[ 3.0% {14ms} BalloonEngine>>initialize
[[ 3.0% {14ms} BalloonEngine>>bitBlt:
[ | 2.8% {13ms} primitives
[ 21.7% {104ms} TextMorph>>paragraph
[ 21.7% {104ms} MultiNewParagraph(NewParagraph)>>compose:style:from:in:
[ 21.7% {104ms} MultiNewParagraph(NewParagraph)>>composeAll
[ 21.7% {104ms} MultiNewParagraph(NewParagraph)>>composeLinesFrom:to:delta:into:priorLines:atY:
[ 21.7% {104ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
[ 21.7% {104ms} TextComposer>>composeAllLines
[ 21.7% {104ms} TextComposer>>composeOneLine
[ 21.7% {104ms} TextComposer>>composeAllRectangles:
[ 21.7% {104ms} TextComposer>>composeEachRectangleIn:
[ 21.7% {104ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
[ 19.7% {94ms} CompositionScanner(CharacterScanner)>>scanCharactersFrom:to...stopConditions:kern:
[ 19.7% {94ms} CompositionScanner(CharacterScanner)>>basicScanCharactersFr...stopConditions:kern:
[[19.7% {94ms} TTCFont>>widthOf:
[[ 19.7% {94ms} TTCFont>>computeForm:
[[ 17.6% {84ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[[ |17.6% {84ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[[ | 17.6% {84ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[[ | 12.6% {60ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[[ | |9.1% {43ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
[[ | | |4.8% {23ms} BalloonEngine>>postFlushIfNeeded
[[ | | | |4.8% {23ms} BalloonEngine>>copyBits
[[ | | | | 4.8% {23ms} BalloonEngine>>copyLoopFaster
[[ | | |4.3% {21ms} BalloonEngine>>registerFill:and:
[[ | | | 4.3% {21ms} BalloonEngine>>registerFills:
[[ | | | 2.4% {11ms} BalloonEngine>>registerFill:
[[ | |3.5% {17ms} BalloonCanvas>>ensuredEngine
[[ | 5.0% {24ms} MatrixTransform2x3 class>>withScale:
[[ 2.2% {10ms} TTCFont>>pixelSize
[[ 2.2% {10ms} TextStyle class>>pointsToPixels:
[[ 2.2% {10ms} TextStyle class>>pixelsPerInch
[[ 2.2% {10ms} Dictionary>>at:ifAbsentPut:
[[ 2.2% {10ms} Dictionary>>at:ifAbsent:
[[ 2.2% {10ms} Dictionary(Set)>>findElementOrNil:
[[ 2.2% {10ms} Dictionary>>scanFor:
[[ 2.2% {10ms} ByteSymbol(String)>>hash
[[ 2.2% {10ms} ByteString class(Object)>>hash
| 2.8% {13ms} FormCanvas(Canvas)>>drawMorph:
| 2.8% {13ms} FormCanvas(Canvas)>>draw:
[2.8% {13ms} PasteUpMorph>>drawOn:
[ 2.8% {13ms} PasteUpMorph(Morph)>>drawOn:
[ 2.8% {13ms} FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
[ 2.8% {13ms} FormCanvas>>fillRectangle:fillStyle:
[ 2.8% {13ms} FormCanvas>>balloonFillRectangle:fillStyle:
[ 2.8% {13ms} BalloonCanvas>>fillRectangle:fillStyle:
[ 2.8% {13ms} BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
[ 2.8% {13ms} BalloonEngine>>drawRectangle:fill:bor...borderColor:transform:
[ 2.8% {13ms} BalloonEngine>>postFlushIfNeeded
[ 2.8% {13ms} BalloonEngine>>copyBits
[ 2.8% {13ms} BalloonEngine>>copyLoopFaster
38.8% {185ms} PasteUpMorph(Morph)>>updateCachedThumbnail
|38.8% {185ms} BookPageThumbnailMorph>>computeThumbnail
| 38.8% {185ms} PasteUpMorph(Morph)>>imageForm
| 38.8% {185ms} PasteUpMorph(Morph)>>imageFormForRectangle:
| 38.8% {185ms} PasteUpMorph(Morph)>>imageForm:forRectangle:
| 38.8% {185ms} FormCanvas(Canvas)>>fullDrawMorph:
| 38.8% {185ms} FormCanvas(Canvas)>>fullDraw:
| 38.8% {185ms} PasteUpMorph(Morph)>>fullDrawOn:
| 31.2% {149ms} PasteUpMorph>>drawSubmorphsOn:
| |31.2% {149ms} FormCanvas(Canvas)>>fullDrawMorph:
| | 31.2% {149ms} FormCanvas(Canvas)>>fullDraw:
| | 31.2% {149ms} TextMorph(Morph)>>fullDrawOn:
| | 31.2% {149ms} FormCanvas(Canvas)>>drawMorph:
[31.2% {149ms} FormCanvas(Canvas)>>draw:
[ 31.2% {149ms} TextMorph>>drawOn:
[ 31.2% {149ms} FormCanvas>>paragraph:bounds:color:
[ 31.2% {149ms} MultiNewParagraph>>displayOn:using:at:
[ 31.2% {149ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
[ 28.2% {135ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
[ 19.1% {91ms} TTCFont>>glyphInfoOf:into:
[ |17.6% {84ms} TTCFont>>ascentOf:
[ | 17.6% {84ms} TTCFont>>ascent
[ | 15.0% {72ms} TTCFont>>pixelSize
[ | |15.0% {72ms} TextStyle class>>pointsToPixels:
[ | | 15.0% {72ms} TextStyle class>>pixelsPerInch
[ | | 15.0% {72ms} Dictionary>>at:ifAbsentPut:
[ | | 13.2% {63ms} Dictionary>>at:ifAbsent:
[ | | 8.9% {42ms} primitives
[ | | 4.3% {21ms} Dictionary(Set)>>findElementOrNil:
[ | | 2.4% {11ms} Dictionary>>scanFor:
[ | 2.6% {12ms} Float(Number)>>//
[ 4.8% {23ms} GrafPort(BitBlt)>>sourceForm:
[ 2.8% {13ms} primitives
| 7.6% {36ms} FormCanvas(Canvas)>>drawMorph:
| 7.6% {36ms} FormCanvas(Canvas)>>draw:
| 7.6% {36ms} PasteUpMorph>>drawOn:
| 7.6% {36ms} PasteUpMorph(Morph)>>drawOn:
| 7.6% {36ms} FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
[7.6% {36ms} FormCanvas>>fillRectangle:fillStyle:
[ 7.6% {36ms} FormCanvas>>balloonFillRectangle:fillStyle:
[ 7.6% {36ms} BalloonCanvas>>fillRectangle:fillStyle:
[ 7.6% {36ms} BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
[ 7.6% {36ms} BalloonEngine>>drawRectangle:fill:bor...borderColor:transform:
[ 7.6% {36ms} BalloonEngine>>postFlushIfNeeded
[ 7.6% {36ms} BalloonEngine>>copyBits
[ 7.6% {36ms} BalloonEngine>>copyLoopFaster
3.5% {17ms} PasteUpMorph>>startSteppingSubmorphsOf:
3.5% {17ms} PasteUpMorph(Morph)>>arrangeToStartSteppingIn:
**Leaves**
16.9% {81ms} BalloonEngine>>copyLoopFaster
13.2% {63ms} Dictionary>>at:ifAbsent:
6.5% {31ms} GrafPort(BitBlt)>>sourceForm:
5.6% {27ms} Float(Number)>>//
5.6% {27ms} Array(SequenceableCollection)>>do:
5.6% {27ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
5.0% {24ms} MatrixTransform2x3 class>>withScale:
3.7% {18ms} Dictionary(Set)>>findElementOrNil:
3.5% {17ms} Float(Number)>>floor
3.5% {17ms} Rectangle>>setOrigin:corner:
3.3% {16ms} Dictionary>>at:ifAbsentPut:
3.3% {16ms} ByteString class(Object)>>hash
3.3% {16ms} GrafPort(BitBlt)>>sourceOrigin:
3.0% {14ms} Point>>extent:
2.4% {11ms} BalloonEngine>>registerFill:
2.2% {10ms} ByteSymbol(String)>>hash
**Memory**
old +832,264 bytes
young -549,516 bytes
used +282,748 bytes
free -282,748 bytes
**GCs**
full 0 totalling 0ms (0.0% uptime)
incr 47 totalling 37ms (8.0% uptime), avg 1.0ms
tenures 1 (avg 47 GCs/tenure)
root table 0 overflows
-------------- next part --------------
- 50151 tallies, 50354 msec.
**Tree**
100.0% {50354ms} BookMorph>>nextPage
100.0% {50354ms} BookMorph>>goToPage:
100.0% {50354ms} BookMorph>>goToPage:transitionSpec:
100.0% {50354ms} BookMorph>>goToPageMorph:transitionSpec:
61.2% {30817ms} PasteUpMorph(Morph)>>updateCachedThumbnail
|61.2% {30817ms} BookPageThumbnailMorph>>computeThumbnail
| 61.2% {30817ms} PasteUpMorph(Morph)>>imageForm
| 61.2% {30817ms} PasteUpMorph(Morph)>>imageFormForRectangle:
| 61.2% {30817ms} PasteUpMorph(Morph)>>imageForm:forRectangle:
| 61.2% {30817ms} FormCanvas(Canvas)>>fullDrawMorph:
| 61.2% {30817ms} FormCanvas(Canvas)>>fullDraw:
| 61.2% {30817ms} PasteUpMorph(Morph)>>fullDrawOn:
| 61.2% {30817ms} PasteUpMorph>>drawSubmorphsOn:
| 61.2% {30817ms} FormCanvas(Canvas)>>fullDrawMorph:
| 61.2% {30817ms} FormCanvas(Canvas)>>fullDraw:
| 61.2% {30817ms} TextMorph(Morph)>>fullDrawOn:
| 61.1% {30766ms} FormCanvas(Canvas)>>drawMorph:
[61.1% {30766ms} FormCanvas(Canvas)>>draw:
[ 61.1% {30766ms} TextMorph>>drawOn:
[ 61.1% {30766ms} FormCanvas>>paragraph:bounds:color:
[ 61.1% {30766ms} MultiNewParagraph>>displayOn:using:at:
[ 61.1% {30766ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
[ 29.2% {14703ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
[ |27.5% {13847ms} TTCFont>>glyphInfoOf:into:
[ | 20.0% {10071ms} TTCFont>>formOf:
[ | |19.2% {9668ms} TTCFont>>computeForm:
[ | | 17.8% {8963ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ | | 17.8% {8963ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ | | 17.8% {8963ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[ | | 10.5% {5287ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[ | | |7.7% {3877ms} BalloonCanvas>>ensuredEngine
[ | | | |7.6% {3827ms} BalloonEngine class(Behavior)>>new
[ | | | | 7.6% {3827ms} BalloonEngine>>initialize
[ | | | | 7.0% {3525ms} BitBlt class>>toForm:
[[6.7% {3374ms} primitives
[ | | |2.6% {1309ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
[ | | 3.6% {1813ms} Form class>>extent:depth:
[ | | |3.6% {1813ms} Form>>setExtent:depth:
[ | | | 3.6% {1813ms} primitives
[ | | 2.8% {1410ms} Form(DisplayMedium)>>fillColor:
[ | 6.6% {3323ms} TTCFont>>ascentOf:
[ | 6.6% {3323ms} TTCFont>>ascent
[ | 4.4% {2216ms} TTCFont>>pixelSize
[ | |4.4% {2216ms} TextStyle class>>pointsToPixels:
[ | | 4.4% {2216ms} TextStyle class>>pixelsPerInch
[ | | 4.1% {2065ms} Dictionary>>at:ifAbsentPut:
[ | | 4.1% {2065ms} Dictionary>>at:ifAbsent:
[ | | 3.0% {1511ms} Dictionary(Set)>>findElementOrNil:
[ | | 2.7% {1360ms} Dictionary>>scanFor:
[ | 2.2% {1108ms} Float(Number)>>//
[ 28.0% {14099ms} MultiDisplayScanner(MultiCharacterScanner)>>scanCharactersFrom...opConditions:kern:
[ |28.0% {14099ms} MultiDisplayScanner(MultiCharacterScanner)>>basicScanCharacter...opConditions:kern:
[ | 28.0% {14099ms} TTCFont>>widthOf:
[ | 26.4% {13293ms} TTCFont>>computeForm:
[ | 25.8% {12991ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ | 25.8% {12991ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ | 25.8% {12991ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[ | 19.8% {9970ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[ | |14.9% {7503ms} BalloonCanvas>>ensuredEngine
[ | | |14.2% {7150ms} BalloonEngine class(Behavior)>>new
[ | | | 14.2% {7150ms} BalloonEngine>>initialize
[ | | | 12.2% {6143ms} BitBlt class>>toForm:
[[12.2% {6143ms} primitives
[ | |5.0% {2518ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
[ | | 3.1% {1561ms} BalloonEngine>>registerFill:and:
[ | | 3.1% {1561ms} BalloonEngine>>registerFills:
[ | | 2.5% {1259ms} BalloonEngine>>registerFill:
[ | 2.8% {1410ms} Form(DisplayMedium)>>fillColor:
[ 3.1% {1561ms} MultiDisplayScanner>>endOfRun
[ 3.0% {1511ms} MultiDisplayScanner>>setStopConditions
[ 3.0% {1511ms} MultiDisplayScanner>>setFont
[ 3.0% {1511ms} MultiDisplayScanner(MultiCharacterScanner)>>setFont
[ 3.0% {1511ms} TTCFont>>widthOf:
[ 2.5% {1259ms} TTCFont>>computeForm:
[ 2.5% {1259ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ 2.5% {1259ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ 2.5% {1259ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
38.2% {19235ms} PasteUpMorph>>displayWorld
38.2% {19235ms} PasteUpMorph>>privateOuterDisplayWorld
38.2% {19235ms} WorldState>>displayWorld:submorphs:
38.2% {19235ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
38.2% {19235ms} FormCanvas(Canvas)>>fullDrawMorph:
38.2% {19235ms} FormCanvas(Canvas)>>fullDraw:
38.2% {19235ms} BookMorph(Morph)>>fullDrawOn:
38.2% {19235ms} BookMorph(Morph)>>drawSubmorphsOn:
38.2% {19235ms} FormCanvas(Canvas)>>fullDrawMorph:
38.2% {19235ms} FormCanvas(Canvas)>>fullDraw:
38.2% {19235ms} PasteUpMorph(Morph)>>fullDrawOn:
37.4% {18832ms} PasteUpMorph>>drawSubmorphsOn:
37.4% {18832ms} FormCanvas(Canvas)>>fullDrawMorph:
[37.4% {18832ms} FormCanvas(Canvas)>>fullDraw:
[ 37.4% {18832ms} TextMorph(Morph)>>fullDrawOn:
[ 37.3% {18782ms} FormCanvas(Canvas)>>drawMorph:
[ 37.3% {18782ms} FormCanvas(Canvas)>>draw:
[ 37.3% {18782ms} TextMorph>>drawOn:
[ 30.7% {15459ms} FormCanvas>>paragraph:bounds:color:
[ |30.7% {15459ms} MultiNewParagraph>>displayOn:using:at:
[ | 30.7% {15459ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
[ | 16.1% {8107ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
[ | |11.9% {5992ms} TTCFont>>glyphInfoOf:into:
[ | | 6.9% {3474ms} TTCFont>>ascentOf:
[ | | |6.9% {3474ms} TTCFont>>ascent
[ | | | 4.7% {2367ms} TTCFont>>pixelSize
[ | | | 4.4% {2216ms} TextStyle class>>pointsToPixels:
[ | | | 4.4% {2216ms} TextStyle class>>pixelsPerInch
[ | | | 4.2% {2115ms} Dictionary>>at:ifAbsentPut:
[ | | | 3.6% {1813ms} Dictionary>>at:ifAbsent:
[ | | 5.0% {2518ms} TTCFont>>formOf:
[ | | 4.7% {2367ms} TTCFont>>computeForm:
[ | | 3.8% {1913ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ | | 3.8% {1913ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ | | 3.8% {1913ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[ | | 2.1% {1057ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[ | 11.3% {5690ms} MultiDisplayScanner(MultiCharacterScanner)>>scanCharactersFrom...opConditions:kern:
[ | 11.3% {5690ms} MultiDisplayScanner(MultiCharacterScanner)>>basicScanCharacter...opConditions:kern:
[ | 11.2% {5640ms} TTCFont>>widthOf:
[ | 11.2% {5640ms} TTCFont>>computeForm:
[ | 9.8% {4935ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[ | 9.8% {4935ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[ | 9.8% {4935ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[ | 5.8% {2921ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
[ | 3.4% {1712ms} BalloonCanvas>>ensuredEngine
[ | 2.4% {1208ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
[ 6.6% {3323ms} TextMorph>>paragraph
[ 6.6% {3323ms} MultiNewParagraph(NewParagraph)>>compose:style:from:in:
[ 6.6% {3323ms} MultiNewParagraph(NewParagraph)>>composeAll
[ 6.6% {3323ms} MultiNewParagraph(NewParagraph)>>composeLinesFrom:to:delta:into:priorLines:atY:
[ 6.6% {3323ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
[ 6.6% {3323ms} TextComposer>>composeAllLines
[ 6.6% {3323ms} TextComposer>>composeOneLine
[ 6.6% {3323ms} TextComposer>>composeAllRectangles:
[ 6.6% {3323ms} TextComposer>>composeEachRectangleIn:
[ 6.4% {3223ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
[ 6.1% {3072ms} CompositionScanner(CharacterScanner)>>scanCharactersFrom:to...stopConditions:kern:
[ 6.1% {3072ms} CompositionScanner(CharacterScanner)>>basicScanCharactersFr...stopConditions:kern:
[[6.1% {3072ms} TTCFont>>widthOf:
[[ 5.8% {2921ms} TTCFont>>computeForm:
[[ 4.6% {2316ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
[[ 4.6% {2316ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
[[ 4.6% {2316ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
[[ 2.9% {1460ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
**Leaves**
20.3% {10222ms} BitBlt class>>toForm:
6.1% {3072ms} Form>>setExtent:depth:
5.3% {2669ms} Rectangle>>setOrigin:corner:
3.6% {1813ms} Dictionary>>at:ifAbsent:
3.3% {1662ms} Point>>+
3.0% {1511ms} Dictionary>>scanFor:
3.0% {1511ms} Float(Number)>>//
2.8% {1410ms} Point>>*
2.5% {1259ms} Association>>key:value:
2.5% {1259ms} Form(DisplayMedium)>>fillColor:
2.2% {1108ms} Color>>pixelWordFor:filledWith:
2.2% {1108ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
2.1% {1057ms} BalloonEngine>>copyLoopFaster
**Memory**
old +1,565,496 bytes
young -1,278,376 bytes
used +287,120 bytes
free +1,279,316 bytes
**GCs**
full 1 totalling 200ms (0.0% uptime), avg 200.0ms
incr 518 totalling 1,117ms (2.0% uptime), avg 2.0ms
tenures 2 (avg 259 GCs/tenure)
root table 0 overflows
More information about the Squeak-dev
mailing list
|