Hi
2013/10/12 Nicolas Cellier <[email protected]>
> OK Igor,
> I loaded ConfigurationOfTxText and I understand what you say:
> - TxText spend more time in composing layout because it records each and
> every TxSpanInterval
> - this will later accelerate display, because no scanning is required at
> display time
> On the base that you compose once and display many, this is a Memory/CPU
> trading that would not have been a good idea the 70's (birth of
> CharacterScanner family), but is now fair.
>
> Even if that does not make much sense, composition (layout building) can
> be measured with this kind of mini bench:
>
>
> | text |
> text := Compiler evaluate: (FileSystem workingDirectory parent parent
> parent / 'text.st' ) readStream contentsOfEntireFile .
> MessageTally spyOn: [[100 timesRepeat: [(Paragraph new)
> compose: text
> style: TextStyle default copy
> from: 1
> in: ( 0@0 corner: 569@9999999)]] timeToRun ].
> MessageTally spyOn: [ 100 timesRepeat: [| m |
> m := TxTextMorph new.
> m layoutStrategy: TxWrapTextStrategy new.
> m extent: 569@9999999.
> m newTextContents: text]]
>
> 95ms in revised Squeak CompositionScanner / 366ms Pharo
> MultiCcompositionScanner / 347ms TxText
I think it is not correct code for TxText. "text" variable contains Text
instance which should be converted to TxModel first. TxModel is replacement
of Text in TxText.
So my benches shows that TxText works better in Pharo:
text := Compiler evaluate: (FileSystem workingDirectory / 'text.st' )
readStream contentsOfEntireFile .
[100 timesRepeat: [(Paragraph new)
compose: text
style: TextStyle default copy
from: 1
in: ( 0@0 corner: 569@9999999)]] timeToRun . 236.
txModel := TxModel new.
cursor := txModel startSpan startPosition.
cursor insert: text.
[ 100 timesRepeat: [| m |
m := TxTextMorph new.
m layoutStrategy: TxWrapTextStrategy new.
m extent: 569@9999999.
m textModel: txModel]] timeToRun. 145.
[ 100 timesRepeat: [| m |
m := TxTextMorph new.
m layoutStrategy: TxNativeLayoutStrategy new. "without wrapping"
m extent: 569@9999999.
m textModel: txModel]] timeToRun. 118 .
But Squeak is champion:
[100 timesRepeat: [(NewParagraph new)
compose: text
style: TextStyle default copy
from: 1
in: ( 0@0 corner: 569@9999999)]] timeToRun . 84.
Best regards,
Denis