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.
goran@krampe.se wrote:
Hi!
Tony Garnock-Jones tonyg@lshift.net 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
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.
goran@krampe.se wrote:
Hi!
Tony Garnock-Jones tonyg@lshift.net 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.
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
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
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.
goran@krampe.se wrote:
Hi!
Tony Garnock-Jones tonyg@lshift.net 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 johnmci@smalltalkconsulting.com 1-800-477-2659 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===
vm-dev@lists.squeakfoundation.org