[Pharo-dev] Small text composition bench

Camille Teruel camille.teruel at gmail.com
Fri Oct 11 14:45:19 EDT 2013


On 11 oct. 2013, at 20:25, Stéphane Ducasse wrote:

> 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.

Me when I come back. We have to work on the editor together anyway.


> 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