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