Re: Poor TTF font performance on Linux with newer VM

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Poor TTF font performance on Linux with newer VM

Tony Garnock-Jones-2
I've just checked against 3.9-4 (built from source tarball from
squeakvm.org), and it's still hideously slow. So it's down to something
that changed between 3.7-7 and 3.9-4. Or perhaps CroquetPlugin or
FloatMathPlugin. Or AioPlugin or UnixOSProcess :-)

Tony.

[hidden email] wrote:

> Hi!
>
> Tony Garnock-Jones <[hidden email]> wrote:
>> 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.
>
> Just wanted to mention that this might indeed be the issue I have been
> experiencing with the new VM in my IRCe image - I thought it had to do
> with Socket communication, but hey, it might as well be this in fact.
>
> regards, Göran
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Poor TTF font performance on Linux with newer VM

Bert Freudenberg-3
Isn't that still the issue that TTF glyphs are not cached long enough  
anymore because of a fix to the garbage collector's weak ref handling?

Is there a fix in the image by now?

- Bert -

Am 18.05.2006 um 13:30 schrieb Tony Garnock-Jones:

> I've just checked against 3.9-4 (built from source tarball from
> squeakvm.org), and it's still hideously slow. So it's down to  
> something
> that changed between 3.7-7 and 3.9-4. Or perhaps CroquetPlugin or
> FloatMathPlugin. Or AioPlugin or UnixOSProcess :-)
>
> Tony.
>
> [hidden email] wrote:
>> Hi!
>>
>> Tony Garnock-Jones <[hidden email]> wrote:
>>> 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.



Reply | Threaded
Open this post in threaded view
|

Re: Poor TTF font performance on Linux with newer VM

Tony Garnock-Jones-2
Bert Freudenberg wrote:
> Isn't that still the issue that TTF glyphs are not cached long enough
> anymore because of a fix to the garbage collector's weak ref handling?
>
> Is there a fix in the image by now?

Wow. That could be interesting to test. I'll try saving and loading the
project with the BookMorph into a 3.9 image; failing that, I'll try
building a mock couple of pages similar to those I have in my 3.8 image.

I'll report back.

Thanks,
  Tony


Reply | Threaded
Open this post in threaded view
|

Re: Poor TTF font performance on Linux with newer VM

Tony Garnock-Jones-2
I've just tried a similar setup in a 3.9b-7032 image with 3.7-7 and
3.9-svn, and I get

3.7-7 - 107 tallies, 120 msec.
3.9-svn just after Smalltalk garbageCollect - 990 tallies, 1005 msec.
3.9-svn otherwise - 1323 tallies, 1343 msec.

So either the glyph caching isn't aggressive enough for this use case (I
made sure to use a real-world text example, rather than homogenous
repeats of the same string), or it's some other problem.

Traces attached.

Regards,
  Tony

Tony Garnock-Jones wrote:

> Bert Freudenberg wrote:
>> Isn't that still the issue that TTF glyphs are not cached long enough
>> anymore because of a fix to the garbage collector's weak ref handling?
>>
>> Is there a fix in the image by now?
>
> Wow. That could be interesting to test. I'll try saving and loading the
> project with the BookMorph into a 3.9 image; failing that, I'll try
> building a mock couple of pages similar to those I have in my 3.8 image.
>
> I'll report back.
>
> Thanks,
>   Tony
>
>

 - 107 tallies, 120 msec.

**Tree**
99.1% {119ms} BookMorph>>nextPage
  99.1% {119ms} BookMorph>>goToPage:
    99.1% {119ms} BookMorph>>goToPage:transitionSpec:
      99.1% {119ms} BookMorph>>goToPageMorph:transitionSpec:
        57.0% {68ms} PasteUpMorph(Morph)>>fullReleaseCachedState
          |57.0% {68ms} TextMorph>>releaseCachedState
          |  57.0% {68ms} TextMorph>>paragraph
          |    57.0% {68ms} MultiNewParagraph(NewParagraph)>>compose:style:from:in:
          |      57.0% {68ms} MultiNewParagraph(NewParagraph)>>composeAll
          |        57.0% {68ms} MultiNewParagraph(NewParagraph)>>composeLinesFrom:to:delta:into:priorLines:atY:
          |          57.0% {68ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
          |            57.0% {68ms} TextComposer>>composeAllLines
          |              50.5% {61ms} TextComposer>>composeOneLine
          |                |43.9% {53ms} TextComposer>>composeAllRectangles:
          |                |  |43.9% {53ms} TextComposer>>composeEachRectangleIn:
          |                |  |  29.0% {35ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
          |                |  |    |22.4% {27ms} CompositionScanner>>setStopConditions
          |                |  |    |  |22.4% {27ms} CompositionScanner>>setFont
          |                |  |    |  |  22.4% {27ms} CompositionScanner(CharacterScanner)>>setFont
          |                |  |    |  |    22.4% {27ms} TextFontReference>>emphasizeScanner:
          |                |  |    |  |      22.4% {27ms} CompositionScanner>>setActualFont:
          |                |  |    |  |        21.5% {26ms} TTCFont>>descent
          |                |  |    |  |          21.5% {26ms} TTCFont>>pixelSize
          |                |  |    |  |            21.5% {26ms} TextStyle class>>pointsToPixels:
          |                |  |    |  |              21.5% {26ms} TextStyle class>>pixelsPerInch
          |                |  |    |  |                21.5% {26ms} Dictionary>>at:ifAbsentPut:
          |                |  |    |  |                  21.5% {26ms} Dictionary>>at:ifAbsent:
          |                |  |    |  |                    21.5% {26ms} Dictionary(Set)>>findElementOrNil:
          |                |  |    |  |                      21.5% {26ms} Dictionary>>scanFor:
          |                |  |    |  |                        21.5% {26ms} ByteSymbol(String)>>hash
          |                |  |    |  |                          20.6% {25ms} primitives
          |                |  |    |6.5% {8ms} CompositionScanner(CharacterScanner)>>handleIndentation
          |                |  |    |  6.5% {8ms} SmallInteger(Integer)>>timesRepeat:
          |                |  |  15.0% {18ms} SmallInteger(Magnitude)>>max:
          |                |6.5% {8ms} Rectangle>>rectanglesAt:height:
          |                |  6.5% {8ms} Point>>corner:
          |                |    6.5% {8ms} Rectangle class>>origin:corner:
          |                |      6.5% {8ms} Rectangle>>setOrigin:corner:
          |              6.5% {8ms} Rectangle>>bottom
        42.1% {51ms} PasteUpMorph>>displayWorld
          42.1% {51ms} PasteUpMorph>>privateOuterDisplayWorld
            42.1% {51ms} WorldState>>displayWorld:submorphs:
              42.1% {51ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
                42.1% {51ms} FormCanvas(Canvas)>>fullDrawMorph:
                  42.1% {51ms} FormCanvas(Canvas)>>fullDraw:
                    42.1% {51ms} BookMorph(Morph)>>fullDrawOn:
                      42.1% {51ms} BookMorph(Morph)>>drawSubmorphsOn:
                        42.1% {51ms} FormCanvas(Canvas)>>fullDrawMorph:
                          42.1% {51ms} FormCanvas(Canvas)>>fullDraw:
                            42.1% {51ms} PasteUpMorph(Morph)>>fullDrawOn:
                              42.1% {51ms} PasteUpMorph>>drawSubmorphsOn:
                                42.1% {51ms} FormCanvas(Canvas)>>fullDrawMorph:
                                  42.1% {51ms} FormCanvas(Canvas)>>fullDraw:
                                    42.1% {51ms} TextMorph(Morph)>>fullDrawOn:
                                      42.1% {51ms} FormCanvas(Canvas)>>drawMorph:
                                        42.1% {51ms} FormCanvas(Canvas)>>draw:
                                          42.1% {51ms} TextMorph>>drawOn:
                                            42.1% {51ms} FormCanvas>>paragraph:bounds:color:
                                              42.1% {51ms} MultiNewParagraph>>displayOn:using:at:
                                                42.1% {51ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
                                                  29.0% {35ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
                                                    |15.0% {18ms} primitives
                                                    |14.0% {17ms} GrafPort>>copyBits
                                                  13.1% {16ms} MultiDisplayScanner>>setStopConditions
                                                    13.1% {16ms} MultiDisplayScanner>>setFont
                                                      13.1% {16ms} TTCFont>>installOn:foregroundColor:backgroundColor:
                                                        13.1% {16ms} GrafPort>>installTTCFont:foregroundColor:backgroundColor:
                                                          13.1% {16ms} GrafPort(BitBlt)>>installTTCFont:foregroundColor:backgroundColor:
                                                            13.1% {16ms} TTCFont>>height
                                                              13.1% {16ms} TTCFont>>pixelSize
                                                                13.1% {16ms} TextStyle class>>pointsToPixels:
                                                                  13.1% {16ms} TextStyle class>>pixelsPerInch
                                                                    13.1% {16ms} Dictionary>>at:ifAbsentPut:

**Leaves**
20.6% {25ms} ByteSymbol(String)>>hash
15.9% {19ms} SmallInteger(Magnitude)>>max:
15.0% {18ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
14.0% {17ms} GrafPort>>copyBits
13.1% {16ms} Dictionary>>at:ifAbsentPut:
6.5% {8ms} Rectangle>>bottom
6.5% {8ms} SmallInteger(Integer)>>timesRepeat:
6.5% {8ms} Rectangle>>setOrigin:corner:

**Memory**
        old +80,608 bytes
        young -226,056 bytes
        used -145,448 bytes
        free +145,448 bytes

**GCs**
        full 0 totalling 0ms (0.0% uptime)
        incr 10 totalling 0ms (0.0% uptime), avg 0.0ms
        tenures 1 (avg 10 GCs/tenure)
        root table 0 overflows

 - 1323 tallies, 1343 msec.

**Tree**
100.0% {1343ms} BookMorph>>nextPage
  100.0% {1343ms} BookMorph>>goToPage:
    100.0% {1343ms} BookMorph>>goToPage:transitionSpec:
      100.0% {1343ms} BookMorph>>goToPageMorph:transitionSpec:
        81.1% {1089ms} PasteUpMorph(Morph)>>fullReleaseCachedState
          |81.1% {1089ms} TextMorph>>releaseCachedState
          |  81.1% {1089ms} TextMorph>>paragraph
          |    81.1% {1089ms} MultiNewParagraph(NewParagraph)>>compose:style:from:in:
          |      81.1% {1089ms} MultiNewParagraph(NewParagraph)>>composeAll
          |        81.1% {1089ms} MultiNewParagraph(NewParagraph)>>composeLinesFrom:to:delta:into:priorLines:atY:
          |          81.1% {1089ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
          |            81.0% {1088ms} TextComposer>>composeAllLines
          |              81.0% {1088ms} TextComposer>>composeOneLine
          |                80.2% {1077ms} TextComposer>>composeAllRectangles:
          |                  80.0% {1074ms} TextComposer>>composeEachRectangleIn:
          |                    79.4% {1066ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
          |                      73.7% {990ms} CompositionScanner(CharacterScanner)>>scanCharactersFrom:to...stopConditions:kern:
          |                        |73.5% {987ms} CompositionScanner(CharacterScanner)>>basicScanCharactersFr...stopConditions:kern:
          |                        |  72.1% {968ms} TTCFont>>widthOf:
          |                        |    67.2% {902ms} TTCFont>>computeForm:
          |                        |      |63.0% {846ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
          |                        |      |  |63.0% {846ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
          |                        |      |  |  62.7% {842ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
          |                        |      |  |    44.8% {602ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
          |                        |      |  |      |27.2% {365ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
          |                        |      |  |      |  |18.9% {254ms} BalloonEngine>>postFlushIfNeeded
          |                        |      |  |      |  |  |17.0% {228ms} BalloonEngine>>copyBits
          |                        |      |  |      |  |  |  16.5% {222ms} BalloonEngine>>copyLoopFaster
          |                        |      |  |      |  |  |    16.4% {220ms} primitives
          |                        |      |  |      |  |6.1% {82ms} BalloonEngine>>registerFill:and:
          |                        |      |  |      |  |  5.4% {73ms} BalloonEngine>>registerFills:
          |                        |      |  |      |  |    2.8% {38ms} BalloonEngine>>registerFill:
          |                        |      |  |      |  |      2.4% {32ms} Color>>scaledPixelValue32
          |                        |      |  |      |  |        2.2% {30ms} Color>>pixelWordForDepth:
          |                        |      |  |      |17.4% {234ms} BalloonCanvas>>ensuredEngine
          |                        |      |  |      |  9.5% {128ms} BalloonEngine class(Behavior)>>new
          |                        |      |  |      |    |9.5% {128ms} BalloonEngine>>initialize
          |                        |      |  |      |    |  5.2% {70ms} BalloonEngine>>bitBlt:
          |                        |      |  |      |  5.0% {67ms} BalloonEngine>>bitBlt:
          |                        |      |  |    5.7% {77ms} Form(DisplayMedium)>>fillColor:
          |                        |      |  |      |4.3% {58ms} Form(DisplayMedium)>>fill:fillColor:
          |                        |      |  |      |  3.9% {52ms} Form>>fill:rule:fillColor:
          |                        |      |  |      |    2.0% {27ms} BitBlt class>>toForm:
          |                        |      |  |    4.1% {55ms} BalloonCanvas class(FormCanvas class)>>on:
          |                        |      |  |      3.3% {44ms} BalloonCanvas(FormCanvas)>>setForm:
          |                        |      |  |        2.1% {28ms} GrafPort class(BitBlt class)>>toForm:
          |                        |      |2.1% {28ms} TTCFont>>pixelSize
          |                        |      |  2.0% {27ms} TextStyle class>>pointsToPixels:
          |                        |      |    2.0% {27ms} TextStyle class>>pixelsPerInch
          |                        |    2.1% {28ms} Character>>charCode
          |                      3.6% {48ms} CompositionScanner>>setStopConditions
          |                        3.6% {48ms} CompositionScanner>>setFont
          |                          3.4% {46ms} CompositionScanner(CharacterScanner)>>setFont
        18.3% {246ms} PasteUpMorph>>displayWorld
          18.3% {246ms} PasteUpMorph>>privateOuterDisplayWorld
            18.3% {246ms} WorldState>>displayWorld:submorphs:
              18.2% {244ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
                18.2% {244ms} FormCanvas(Canvas)>>fullDrawMorph:
                  18.2% {244ms} FormCanvas(Canvas)>>fullDraw:
                    18.2% {244ms} BookMorph(Morph)>>fullDrawOn:
                      18.2% {244ms} BookMorph(Morph)>>drawSubmorphsOn:
                        18.2% {244ms} FormCanvas(Canvas)>>fullDrawMorph:
                          18.2% {244ms} FormCanvas(Canvas)>>fullDraw:
                            18.2% {244ms} PasteUpMorph(Morph)>>fullDrawOn:
                              17.5% {235ms} PasteUpMorph>>drawSubmorphsOn:
                                17.0% {228ms} FormCanvas(Canvas)>>fullDrawMorph:
                                  17.0% {228ms} FormCanvas(Canvas)>>fullDraw:
                                    17.0% {228ms} TextMorph(Morph)>>fullDrawOn:
                                      17.0% {228ms} FormCanvas(Canvas)>>drawMorph:
                                        17.0% {228ms} FormCanvas(Canvas)>>draw:
                                          17.0% {228ms} TextMorph>>drawOn:
                                            17.0% {228ms} FormCanvas>>paragraph:bounds:color:
                                              17.0% {228ms} MultiNewParagraph>>displayOn:using:at:
                                                17.0% {228ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
                                                  9.0% {121ms} MultiDisplayScanner(MultiCharacterScanner)>>scanCharactersFrom...opConditions:kern:
                                                    |9.0% {121ms} MultiDisplayScanner(MultiCharacterScanner)>>basicScanCharacter...opConditions:kern:
                                                    |  9.0% {121ms} TTCFont>>widthOf:
                                                    |    8.7% {117ms} TTCFont>>computeForm:
                                                    |      7.8% {105ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
                                                    |        7.8% {105ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
                                                    |          7.8% {105ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
                                                    |            5.6% {75ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
                                                    |              2.9% {39ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
                                                    |              2.6% {35ms} BalloonCanvas>>ensuredEngine
                                                  6.8% {91ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
                                                    4.9% {66ms} TTCFont>>glyphInfoOf:into:
                                                      4.5% {60ms} TTCFont>>formOf:
                                                        3.3% {44ms} TTCFont>>computeForm:
                                                          3.1% {42ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
                                                            3.1% {42ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
                                                              3.1% {42ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
                                                                2.3% {31ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:

**Leaves**
19.5% {262ms} BalloonEngine>>copyLoopFaster
3.6% {48ms} Character>>charCode
2.9% {39ms} Rectangle>>setOrigin:corner:
2.1% {28ms} Rectangle>>top
2.0% {27ms} LargePositiveInteger class(Behavior)>>new:

**Memory**
        old +150,016 bytes
        young +80,404 bytes
        used +230,420 bytes
        free -230,420 bytes

**GCs**
        full 0 totalling 0ms (0.0% uptime)
        incr 174 totalling 62ms (5.0% uptime), avg 0.0ms
        tenures 2 (avg 87 GCs/tenure)
        root table 0 overflows

 - 990 tallies, 1005 msec.

**Tree**
100.0% {1005ms} BookMorph>>nextPage
  100.0% {1005ms} BookMorph>>goToPage:
    100.0% {1005ms} BookMorph>>goToPage:transitionSpec:
      99.9% {1004ms} BookMorph>>goToPageMorph:transitionSpec:
        74.7% {751ms} PasteUpMorph(Morph)>>fullReleaseCachedState
          |74.7% {751ms} TextMorph>>releaseCachedState
          |  74.7% {751ms} TextMorph>>paragraph
          |    74.7% {751ms} MultiNewParagraph(NewParagraph)>>compose:style:from:in:
          |      74.7% {751ms} MultiNewParagraph(NewParagraph)>>composeAll
          |        74.7% {751ms} MultiNewParagraph(NewParagraph)>>composeLinesFrom:to:delta:into:priorLines:atY:
          |          74.7% {751ms} TextComposer>>composeLinesFrom:to:del...ner:wantsColumnBreaks:
          |            73.9% {743ms} TextComposer>>composeAllLines
          |              73.9% {743ms} TextComposer>>composeOneLine
          |                73.5% {739ms} TextComposer>>composeAllRectangles:
          |                  73.3% {737ms} TextComposer>>composeEachRectangleIn:
          |                    73.0% {734ms} CompositionScanner>>composeFrom:inRectan...leftSide:rightSide:
          |                      67.3% {676ms} CompositionScanner(CharacterScanner)>>scanCharactersFrom:to...stopConditions:kern:
          |                        |67.1% {674ms} CompositionScanner(CharacterScanner)>>basicScanCharactersFr...stopConditions:kern:
          |                        |  65.9% {662ms} TTCFont>>widthOf:
          |                        |    61.2% {615ms} TTCFont>>computeForm:
          |                        |      57.1% {574ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
          |                        |        |57.0% {573ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
          |                        |        |  56.7% {570ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
          |                        |        |    40.2% {404ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
          |                        |        |      |24.4% {245ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
          |                        |        |      |  |17.4% {175ms} BalloonEngine>>postFlushIfNeeded
          |                        |        |      |  |  |16.0% {161ms} BalloonEngine>>copyBits
          |                        |        |      |  |  |  15.3% {154ms} BalloonEngine>>copyLoopFaster
          |                        |        |      |  |  |    14.0% {141ms} primitives
          |                        |        |      |  |5.1% {51ms} BalloonEngine>>registerFill:and:
          |                        |        |      |  |  4.5% {45ms} BalloonEngine>>registerFills:
          |                        |        |      |  |    2.4% {24ms} BalloonEngine>>registerFill:
          |                        |        |      |  |      2.2% {22ms} Color>>scaledPixelValue32
          |                        |        |      |15.7% {158ms} BalloonCanvas>>ensuredEngine
          |                        |        |      |  8.7% {87ms} BalloonEngine class(Behavior)>>new
          |                        |        |      |    |8.5% {85ms} BalloonEngine>>initialize
          |                        |        |      |    |  5.5% {55ms} BalloonEngine>>bitBlt:
          |                        |        |      |  4.6% {46ms} BalloonEngine>>bitBlt:
          |                        |        |    5.6% {56ms} Form(DisplayMedium)>>fillColor:
          |                        |        |      |4.8% {48ms} Form(DisplayMedium)>>fill:fillColor:
          |                        |        |      |  4.4% {44ms} Form>>fill:rule:fillColor:
          |                        |        |      |    2.4% {24ms} BitBlt>>copy:from:in:fillColor:rule:
          |                        |        |    4.5% {45ms} BalloonCanvas class(FormCanvas class)>>on:
          |                        |        |      4.0% {40ms} BalloonCanvas(FormCanvas)>>setForm:
          |                        |      2.8% {28ms} TTCFont>>pixelSize
          |                        |        2.2% {22ms} TextStyle class>>pointsToPixels:
          |                      4.2% {42ms} CompositionScanner>>setStopConditions
          |                        4.2% {42ms} CompositionScanner>>setFont
          |                          4.0% {40ms} CompositionScanner(CharacterScanner)>>setFont
          |                            2.6% {26ms} TTCFont>>widthOf:
          |                              2.4% {24ms} TTCFont>>computeForm:
          |                                2.3% {23ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
          |                                  2.3% {23ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
          |                                    2.3% {23ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
        24.2% {243ms} PasteUpMorph>>displayWorld
          24.2% {243ms} PasteUpMorph>>privateOuterDisplayWorld
            24.2% {243ms} WorldState>>displayWorld:submorphs:
              24.0% {241ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
                24.0% {241ms} FormCanvas(Canvas)>>fullDrawMorph:
                  24.0% {241ms} FormCanvas(Canvas)>>fullDraw:
                    24.0% {241ms} BookMorph(Morph)>>fullDrawOn:
                      23.9% {240ms} BookMorph(Morph)>>drawSubmorphsOn:
                        23.9% {240ms} FormCanvas(Canvas)>>fullDrawMorph:
                          23.9% {240ms} FormCanvas(Canvas)>>fullDraw:
                            23.9% {240ms} PasteUpMorph(Morph)>>fullDrawOn:
                              22.4% {225ms} PasteUpMorph>>drawSubmorphsOn:
                                22.4% {225ms} FormCanvas(Canvas)>>fullDrawMorph:
                                  22.4% {225ms} FormCanvas(Canvas)>>fullDraw:
                                    22.4% {225ms} TextMorph(Morph)>>fullDrawOn:
                                      22.4% {225ms} FormCanvas(Canvas)>>drawMorph:
                                        22.4% {225ms} FormCanvas(Canvas)>>draw:
                                          22.4% {225ms} TextMorph>>drawOn:
                                            22.4% {225ms} FormCanvas>>paragraph:bounds:color:
                                              22.4% {225ms} MultiNewParagraph>>displayOn:using:at:
                                                22.1% {222ms} MultiDisplayScanner>>displayLine:offset:leftInRun:
                                                  13.5% {136ms} MultiDisplayScanner(MultiCharacterScanner)>>scanCharactersFrom...opConditions:kern:
                                                    |13.5% {136ms} MultiDisplayScanner(MultiCharacterScanner)>>basicScanCharacter...opConditions:kern:
                                                    |  13.4% {135ms} TTCFont>>widthOf:
                                                    |    13.0% {131ms} TTCFont>>computeForm:
                                                    |      12.3% {124ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
                                                    |        12.2% {123ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
                                                    |          12.2% {123ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:
                                                    |            9.5% {95ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:
                                                    |              4.7% {47ms} BalloonEngine>>drawGeneralBezierShape...borderColor:transform:
                                                    |                |2.9% {29ms} BalloonEngine>>postFlushIfNeeded
                                                    |                |  2.2% {22ms} BalloonEngine>>copyBits
                                                    |                |    2.2% {22ms} BalloonEngine>>copyLoopFaster
                                                    |              4.6% {46ms} BalloonCanvas>>ensuredEngine
                                                    |                2.4% {24ms} BalloonEngine class(Behavior)>>new
                                                    |                  2.3% {23ms} BalloonEngine>>initialize
                                                  8.2% {82ms} TTCFont>>displayString:on:from:to:at:kern:baselineY:
                                                    5.2% {52ms} TTCFont>>glyphInfoOf:into:
                                                      4.9% {49ms} TTCFont>>formOf:
                                                        3.7% {37ms} TTCFont>>computeForm:
                                                          3.5% {35ms} TTGlyph>>asFormWithScale:ascender:...er:fgColor:bgColor:depth:
                                                            3.5% {35ms} TTGlyph>>asFormWithScale:ascender:...Color:depth:replaceColor:
                                                              3.5% {35ms} TTGlyph>>asFormWithScale:ascender:...:lingGlyphWidth:emphasis:

                                                                2.3% {23ms} BalloonCanvas>>drawGeneralBezierShape...rderWidth:borderColor:

**Leaves**
18.1% {182ms} BalloonEngine>>copyLoopFaster
2.9% {29ms} Character>>charCode
2.6% {26ms} Rectangle>>setOrigin:corner:
2.4% {24ms} BalloonEdgeData class(Behavior)>>new
2.4% {24ms} LargePositiveInteger class(Behavior)>>new:

**Memory**
        old +109,396 bytes
        young -11,092 bytes
        used +98,304 bytes
        free -98,304 bytes

**GCs**
        full 0 totalling 0ms (0.0% uptime)
        incr 129 totalling 36ms (4.0% uptime), avg 0.0ms
        tenures 1 (avg 129 GCs/tenure)
        root table 0 overflows
Reply | Threaded
Open this post in threaded view
|

Re: Poor TTF font performance on Linux with newer VM

johnmci
In reply to this post by Bert Freudenberg-3
I recall Andreas posting a fix to the squeak list earlier in 2006, or  
was that 2005?

On 18-May-06, at 4:36 AM, Bert Freudenberg wrote:

> Isn't that still the issue that TTF glyphs are not cached long  
> enough anymore because of a fix to the garbage collector's weak ref  
> handling?
>
> Is there a fix in the image by now?
>
> - Bert -
>
> Am 18.05.2006 um 13:30 schrieb Tony Garnock-Jones:
>
>> I've just checked against 3.9-4 (built from source tarball from
>> squeakvm.org), and it's still hideously slow. So it's down to  
>> something
>> that changed between 3.7-7 and 3.9-4. Or perhaps CroquetPlugin or
>> FloatMathPlugin. Or AioPlugin or UnixOSProcess :-)
>>
>> Tony.
>>
>> [hidden email] wrote:
>>> Hi!
>>>
>>> Tony Garnock-Jones <[hidden email]> wrote:
>>>> 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.
>
>

--
========================================================================
===
John M. McIntosh <[hidden email]> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
========================================================================
===