3.8 UI performance drop?
Jon Hylands
jon at huv.com
Sat Dec 4 00:56:55 UTC 2004
On Fri, 3 Dec 2004 16:11:24 -0800, Ned Konz <ned at squeakland.org> wrote:
> Have you tried profiling, then?
>
> Is the performance worse or better than with (a) other TrueType fonts, or (b)
> bitmap fonts?
Attached are two profiles, of typing a short sentence in a code window.
The first, profile-1.txt is with a TTC font. The second is using Accugen,
which is a bitmap font. The difference is striking.
Later,
Jon
--------------------------------------------------------------
Jon Hylands Jon at huv.com http://www.huv.com/jon
Project: Micro Seeker (Micro Autonomous Underwater Vehicle)
http://www.huv.com
-------------- next part --------------
- 7931 tallies, 8146 msec.
**Tree**
100.0% {8146ms} PasteUpMorph>>doOneCycle
100.0% {8146ms} WorldState>>doOneCycleFor:
60.4% {4920ms} WorldState>>doOneCycleNowFor:
|46.2% {3763ms} WorldState>>displayWorldSafely:
| |46.2% {3763ms} PasteUpMorph>>displayWorld
| | 46.2% {3763ms} PasteUpMorph>>privateOuterDisplayWorld
| | 46.2% {3763ms} WorldState>>displayWorld:submorphs:
| | 40.2% {3275ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
| | |40.0% {3258ms} FormCanvas(Canvas)>>fullDrawMorph:
| | | 40.0% {3258ms} FormCanvas(Canvas)>>fullDraw:
| | | 40.0% {3258ms} SystemWindow(Morph)>>fullDrawOn:
| | | 37.3% {3038ms} SystemWindow(Morph)>>drawSubmorphsOn:
| | | |37.3% {3038ms} FormCanvas(Canvas)>>fullDrawMorph:
| | | | 37.3% {3038ms} FormCanvas(Canvas)>>fullDraw:
| | | | 37.3% {3038ms} AlignmentMorph(Morph)>>fullDrawOn:
| | | | 37.1% {3022ms} AlignmentMorph(Morph)>>drawSubmorphsOn:
| | | | 37.1% {3022ms} FormCanvas(Canvas)>>fullDrawMorph:
[37.1% {3022ms} FormCanvas(Canvas)>>fullDraw:
[ 37.1% {3022ms} AlignmentMorph(Morph)>>fullDrawOn:
[ 36.6% {2981ms} AlignmentMorph(Morph)>>drawSubmorphsOn:
[ 36.6% {2981ms} FormCanvas(Canvas)>>fullDrawMorph:
[ 36.6% {2981ms} FormCanvas(Canvas)>>fullDraw:
[ 36.6% {2981ms} PluggableButtonMorph(Morph)>>fullDrawOn:
[ 31.1% {2533ms} TransformMorph>>drawSubmorphsOn:
[ |31.1% {2533ms} FormCanvas(Canvas)>>fullDrawMorph:
[ | 31.1% {2533ms} FormCanvas(Canvas)>>fullDraw:
[ | 31.1% {2533ms} TextMorphForEditView(Morph)>>fullDrawOn:
[ | 31.1% {2533ms} FormCanvas(Canvas)>>drawMorph:
[ | 31.1% {2533ms} FormCanvas(Canvas)>>draw:
[ | 31.1% {2533ms} TextMorphForEditView(TextMorph)>>drawOn:
[ | 31.0% {2525ms} FormCanvas>>paragraph:bounds:color:
[ | 31.0% {2525ms} NewParagraph>>displayOn:using:at:
[ | 30.8% {2509ms} DisplayScanner>>displayLine:offset:leftInRun:
[ | 17.0% {1385ms} DisplayScanner>>endOfRun
[[16.9% {1377ms} DisplayScanner>>setStopConditions
[[ 16.9% {1377ms} DisplayScanner>>setFont
[[ 15.4% {1254ms} DisplayScanner(CharacterScanner)>>setFont
[[ 15.0% {1222ms} FT2Font>>emphasized:
[[ 15.0% {1222ms} FT2Font class>>installedFT2FontLike:withEmphasis:
[[ 12.6% {1026ms} TextStyle class>>actualTextStyles
[[ 7.9% {644ms} Dictionary>>select:
[[ |6.6% {538ms} Dictionary>>add:
[[ | 4.4% {358ms} Dictionary(Set)>>atNewIndex:put:
[[ | 3.6% {293ms} Dictionary(Set)>>fullCheck
[[ | 3.2% {261ms} Dictionary(Set)>>grow
[[ 3.8% {310ms} Character(Object)>>isKindOf:
[[ 2.1% {171ms} Character class(Behavior)>>inheritsFrom:
[ | 7.8% {635ms} DisplayScanner>>setStopConditions
[[7.8% {635ms} DisplayScanner>>setFont
[[ 7.7% {627ms} DisplayScanner(CharacterScanner)>>setFont
[[ 7.5% {611ms} FT2Font>>emphasized:
[[ 7.5% {611ms} FT2Font class>>installedFT2FontLike:withEmphasis:
[[ 6.5% {529ms} TextStyle class>>actualTextStyles
[[ 4.2% {342ms} Dictionary>>select:
[[ 3.4% {277ms} Dictionary>>add:
[[ 2.3% {187ms} Dictionary(Set)>>atNewIndex:put:
[ | 5.2% {424ms} FT2Font>>displayString:on:from:to:at:kern:
[[5.1% {415ms} GrafPort(BitBlt)>>displayFT2String:from:to:at:strikeFont:kern:
[[ 5.1% {415ms} GrafPort(BitBlt)>>primDisplayFT2String:from:...Table:oTable:xTable:kern:
[[ 5.0% {407ms} GrafPort(BitBlt)>>nonPrimDisplayFT2String:fr...Table:oTable:xTable:kern:
[[ 4.1% {334ms} GrafPort>>copyBits
[ 2.6% {212ms} FormCanvas(Canvas)>>roundCornersOf:during:
[ 2.6% {212ms} FormCanvas>>roundCornersOf:in:during:
[ 2.6% {212ms} CornerRounder class>>roundCornersOf:on:i...orderWidth:corners:
[ 2.0% {163ms} CornerRounder>>tweakCornersOf:on:in:borderWidth:corners:
| | | 2.4% {196ms} FormCanvas(Canvas)>>drawMorph:
| | | 2.4% {196ms} FormCanvas(Canvas)>>draw:
| | | 2.4% {196ms} SystemWindow(Morph)>>drawOn:
| | | 2.4% {196ms} FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
| | | 2.2% {179ms} FormCanvas>>fillRectangle:fillStyle:
| | | 2.2% {179ms} FormCanvas(Canvas)>>fillRectangle:color:
[2.2% {179ms} FormCanvas>>frameAndFillRectangle:fi...orderWidth:borderColor:
[ 2.2% {179ms} GrafPort>>fillRect:offset:
[ 2.2% {179ms} GrafPort>>copyBits
| | 5.7% {464ms} WorldState>>forceDamageToScreen:
| | 5.7% {464ms} DisplayScreen>>forceDamageToScreen:
| | 5.7% {464ms} OrderedCollection>>do:
|9.9% {806ms} HandMorph>>processEvents
| |9.3% {758ms} HandMorph>>handleEvent:
| | 7.0% {570ms} HandMorph>>sendKeyboardEvent:
| | 7.0% {570ms} HandMorph>>sendEvent:focus:clear:
| | 7.0% {570ms} HandMorph>>sendFocusEvent:to:clear:
| | 7.0% {570ms} TextMorphForEditView(Morph)>>handleFocusEvent:
| | 7.0% {570ms} TextMorphForEditView(Morph)>>handleEvent:
| | 7.0% {570ms} KeyboardEvent>>sentTo:
| | 7.0% {570ms} TextMorphForEditView(TextMorph)>>handleKeystroke:
| | 7.0% {570ms} TextMorphForEditView>>keyStroke:
| | 6.9% {562ms} TextMorphForEditView(TextMorph)>>keyStroke:
| | 5.4% {440ms} TextMorphEditor>>readKeyboard
| | 5.4% {440ms} TextMorphEditor(ParagraphEditor)>>readKeyboard
| | 5.4% {440ms} TextMorphEditor>>zapSelectionWith:
[2.8% {228ms} NewParagraph>>replaceFrom:to:with:displaying:
[ |2.8% {228ms} NewParagraph>>recomposeFrom:to:delta:
[ | 2.8% {228ms} NewParagraph>>composeLinesFrom:to:delta:into:priorLines:atY:
[ | 2.8% {228ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
[ | 2.8% {228ms} TextComposer>>composeAllLines
[ | 2.7% {220ms} TextComposer>>composeOneLine
[ | 2.7% {220ms} TextComposer>>composeAllRectangles:
[ | 2.7% {220ms} TextComposer>>composeEachRectangleIn:
[ | 2.7% {220ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
[2.3% {187ms} TextMorphEditor(ParagraphEditor)>>computeIntervalFrom:to:
|4.3% {350ms} PasteUpMorph>>runStepMethods
| 4.3% {350ms} WorldState>>runStepMethodsIn:
| 4.3% {350ms} WorldState>>runLocalStepMethodsIn:
| 2.6% {212ms} StepMessage(MorphicAlarm)>>value:
| 2.0% {163ms} NCLineEndConstraintMorph(Morph)>>stepAt:
39.5% {3218ms} WorldState>>interCyclePause:
39.5% {3218ms} Delay>>wait
39.5% {3218ms} primitives
**Leaves**
39.5% {3218ms} Delay>>wait
6.8% {554ms} GrafPort>>copyBits
5.7% {464ms} OrderedCollection>>do:
3.9% {318ms} Array class(Behavior)>>inheritsFrom:
3.5% {285ms} Array(Object)>>isKindOf:
3.1% {253ms} Array(SequenceableCollection)>>do:
3.0% {244ms} Dictionary(Set)>>do:
2.5% {204ms} Symbol>>=
2.5% {204ms} String>>hash
**Memory**
old +198,564 bytes
young -13,736 bytes
used +184,828 bytes
free -184,828 bytes
**GCs**
full 0 totalling 0ms (0.0% uptime)
incr 339 totalling 368ms (5.0% uptime), avg 1.0ms
tenures 3 (avg 113 GCs/tenure)
root table 0 overflows
-------------- next part --------------
- 7138 tallies, 7230 msec.
**Tree**
100.0% {7230ms} PasteUpMorph>>doOneCycle
100.0% {7230ms} WorldState>>doOneCycleFor:
64.1% {4634ms} WorldState>>interCyclePause:
|64.0% {4627ms} Delay>>wait
| 64.0% {4627ms} primitives
35.9% {2596ms} WorldState>>doOneCycleNowFor:
25.2% {1822ms} WorldState>>displayWorldSafely:
|25.2% {1822ms} PasteUpMorph>>displayWorld
| 25.2% {1822ms} PasteUpMorph>>privateOuterDisplayWorld
| 25.2% {1822ms} WorldState>>displayWorld:submorphs:
| 18.0% {1301ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
| |17.6% {1272ms} FormCanvas(Canvas)>>fullDrawMorph:
| | 17.6% {1272ms} FormCanvas(Canvas)>>fullDraw:
| | 17.6% {1272ms} SystemWindow(Morph)>>fullDrawOn:
| | 13.6% {983ms} SystemWindow(Morph)>>drawSubmorphsOn:
| | |13.6% {983ms} FormCanvas(Canvas)>>fullDrawMorph:
| | | 13.6% {983ms} FormCanvas(Canvas)>>fullDraw:
| | | 13.6% {983ms} AlignmentMorph(Morph)>>fullDrawOn:
| | | 13.1% {947ms} AlignmentMorph(Morph)>>drawSubmorphsOn:
| | | 13.1% {947ms} FormCanvas(Canvas)>>fullDrawMorph:
[13.1% {947ms} FormCanvas(Canvas)>>fullDraw:
[ 13.1% {947ms} AlignmentMorph(Morph)>>fullDrawOn:
[ 12.2% {882ms} AlignmentMorph(Morph)>>drawSubmorphsOn:
[ 12.0% {868ms} FormCanvas(Canvas)>>fullDrawMorph:
[ 12.0% {868ms} FormCanvas(Canvas)>>fullDraw:
[ 12.0% {868ms} PluggableButtonMorph(Morph)>>fullDrawOn:
[ 5.0% {362ms} TransformMorph>>drawSubmorphsOn:
[ |5.0% {362ms} FormCanvas(Canvas)>>fullDrawMorph:
[ | 5.0% {362ms} FormCanvas(Canvas)>>fullDraw:
[ | 5.0% {362ms} TextMorphForEditView(Morph)>>fullDrawOn:
[ | 4.9% {354ms} FormCanvas(Canvas)>>drawMorph:
[ | 4.9% {354ms} FormCanvas(Canvas)>>draw:
[ | 4.9% {354ms} TextMorphForEditView(TextMorph)>>drawOn:
[ | 4.9% {354ms} FormCanvas>>paragraph:bounds:color:
[ | 4.9% {354ms} NewParagraph>>displayOn:using:at:
[ | 4.7% {340ms} DisplayScanner>>displayLine:offset:leftInRun:
[ | 3.1% {224ms} StrikeFont>>displayString:on:from:to:at:kern:
[[3.0% {217ms} GrafPort(BitBlt)>>displayString:from:to:at:strikeFont:kern:
[ 3.3% {239ms} FormCanvas(Canvas)>>roundCornersOf:during:
[ 3.3% {239ms} FormCanvas>>roundCornersOf:in:during:
[ 3.2% {231ms} CornerRounder class>>roundCornersOf:on:i...orderWidth:corners:
[ 2.1% {152ms} CornerRounder>>tweakCornersOf:on:in:borderWidth:corners:
| | 3.3% {239ms} FormCanvas(Canvas)>>drawMorph:
| | 3.2% {231ms} FormCanvas(Canvas)>>draw:
| | 3.2% {231ms} SystemWindow(Morph)>>drawOn:
| | 3.2% {231ms} FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
| | 2.8% {202ms} FormCanvas>>fillRectangle:fillStyle:
| | 2.8% {202ms} FormCanvas(Canvas)>>fillRectangle:color:
[2.8% {202ms} FormCanvas>>frameAndFillRectangle:fi...orderWidth:borderColor:
[ 2.8% {202ms} GrafPort>>fillRect:offset:
[ 2.8% {202ms} GrafPort>>copyBits
| 7.0% {506ms} WorldState>>forceDamageToScreen:
| 7.0% {506ms} DisplayScreen>>forceDamageToScreen:
| 7.0% {506ms} OrderedCollection>>do:
5.8% {419ms} HandMorph>>processEvents
|5.3% {383ms} HandMorph>>handleEvent:
| 2.6% {188ms} HandMorph>>sendKeyboardEvent:
| |2.6% {188ms} HandMorph>>sendEvent:focus:clear:
| | 2.6% {188ms} HandMorph>>sendFocusEvent:to:clear:
| | 2.6% {188ms} TextMorphForEditView(Morph)>>handleFocusEvent:
| | 2.6% {188ms} TextMorphForEditView(Morph)>>handleEvent:
| | 2.6% {188ms} KeyboardEvent>>sentTo:
| | 2.6% {188ms} TextMorphForEditView(TextMorph)>>handleKeystroke:
| | 2.6% {188ms} TextMorphForEditView>>keyStroke:
| | 2.5% {181ms} TextMorphForEditView(TextMorph)>>keyStroke:
| 2.4% {174ms} MouseOverHandler>>processMouseOver:
| 2.1% {152ms} HandMorph>>handleEvent:
| 2.1% {152ms} HandMorph>>sendMouseEvent:
| 2.1% {152ms} HandMorph>>sendEvent:focus:clear:
| 2.1% {152ms} PasteUpMorph(Morph)>>processEvent:
| 2.1% {152ms} PasteUpMorph>>processEvent:using:
| 2.0% {145ms} PasteUpMorph(Morph)>>processEvent:using:
| 2.0% {145ms} MorphicEventDispatcher>>dispatchEvent:with:
| 2.0% {145ms} MorphicEventDispatcher>>dispatchDefault:with:
4.7% {340ms} PasteUpMorph>>runStepMethods
4.7% {340ms} WorldState>>runStepMethodsIn:
4.7% {340ms} WorldState>>runLocalStepMethodsIn:
3.1% {224ms} StepMessage(MorphicAlarm)>>value:
2.5% {181ms} NCAAConnectorMorph(Morph)>>stepAt:
**Leaves**
64.0% {4627ms} Delay>>wait
7.0% {506ms} OrderedCollection>>do:
3.1% {224ms} GrafPort>>copyBits
3.0% {217ms} GrafPort(BitBlt)>>displayString:from:to:at:strikeFont:kern:
**Memory**
old +237,604 bytes
young -37,228 bytes
used +200,376 bytes
free -200,376 bytes
**GCs**
full 0 totalling 0ms (0.0% uptime)
incr 215 totalling 252ms (3.0% uptime), avg 1.0ms
tenures 3 (avg 71 GCs/tenure)
root table 0 overflows
More information about the Squeak-dev
mailing list
|