[Pharo-dev] Small text composition bench

Stéphane Ducasse stephane.ducasse at inria.fr
Fri Oct 11 14:25:35 EDT 2013


Hi 

I discuss with igor and its new design precomputes everything so we will see.
What would be good is to have another guy looking at what igor is doing because now that fernando transformed himself 
in a puff of smoke, igor is alone with me looking at it form time to time.

Stef
On Oct 11, 2013, at 1:08 PM, plantec <alain.plantec at yahoo.com> wrote:

> 
> Le 11 oct. 2013 à 08:15, Denis Kudriashov <dionisiydk at gmail.com> a écrit :
> 
>> Me too.
>> 
>> What exactly doing this code?
>> 
>> Paragraph new compose: tm text
>>        style: tm textStyle copy
>>        from: 1
>>        in:
>> 
>> Is it layout building stuff at new text model?
> 
> I think yes.
> It composes a Text as a collection of TextLine.
> Alain
> 
>> 
>> 
>> 2013/10/11 Stéphane Ducasse <stephane.ducasse at inria.fr>
>> Hi Igor
>> 
>> it would be good to see how the new text model perform.
>> 
>> Stef
>> 
>> 
>> Begin forwarded message:
>> 
>>> From: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
>>> Subject: Fwd: Small text composition bench
>>> Date: October 10, 2013 10:46:42 PM GMT+02:00
>>> To: Stéphane Ducasse <stephane.ducasse at inria.fr>
>>> 
>>> 
>>> 
>>> ---------- Forwarded message ----------
>>> From: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
>>> Date: 2013/10/10
>>> Subject: Small text composition bench
>>> To: The general-purpose Squeak developers list <squeak-dev at lists.squeakfoundation.org>
>>> 
>>> 
>>> Here is a simple bench:
>>> 
>>> (StringHolder new contents:  (Compiler evaluate: (FileStream fileNamed: 'text.st') contentsOfEntireFile )) openLabel:  'Working With Squeak 2' .
>>> ((SystemWindow allSubInstances detect: [:e | e label = 'Working With Squeak 2']) findDeepSubmorphThat: [:m | m class = PluggableTextMorphPlus] ifAbsent: [] ) textMorph
>>> ifNotNil: [:tm | MessageTally spyOn: [
>>>    [100 timesRepeat: [(NewParagraph new)
>>>        compose: tm text
>>>        style: tm textStyle copy
>>>        from: 1
>>>        in: tm container]] timeToRun]].
>>> 
>>> Before our changes: 162 ms
>>> After our changes: 95 ms
>>> And my Pharo 3.0 (#30417) (not up to date) :  364 ms
>>> 
>>> The main gain is avoiding
>>> - the stopConditions copy
>>> - and the TextStopConditions indirection
>>> - and of course the Multi* when not necessary (Pharo does not)
>>> 
>>> Here is the test for Pharo variant:
>>> 
>>> | text |
>>> text := Compiler evaluate: (FileSystem workingDirectory parent parent parent / 'text.st' ) readStream contentsOfEntireFile .
>>> (StringHolder new contents:  text) openLabel:  'Working With Squeak 2' .
>>> ((SystemWindow allSubInstances detect: [:e | e label = 'Working With Squeak 2']) findDeepSubmorphThat: [:m | m class = PluggableTextMorph] ifAbsent: [] ) textMorph
>>> ifNotNil: [:tm | MessageTally spyOn: [
>>>    [100 timesRepeat: [(Paragraph new)
>>>        compose: text
>>>        style: tm textStyle copy
>>>        from: 1
>>>        in: tm container]] timeToRun]].
>>> 
>>> 
>>> 
>> 
>> 
>> 
>> 
> 
> 





More information about the Pharo-dev mailing list