I already committed a fix. Look at the details in:
Doru
On Mon, Aug 26, 2013 at 12:06 AM, Alexandre Bergel
<alexandre.bergel(a)me.com>wrote;wrote:
Hi Ben!
Thanks for your experiment. So, what is your conclusion? Can you provide a
fix ?
Alexandre
On Aug 24, 2013, at 2:40 PM, Ben Coman <btc(a)openInWorld.com> wrote:
After loading Athens, then
[|view|
view := ROMondrianViewBuilder new.
view shape label fontSize: [:x | x ].
view nodes: (10 to: 100).
view open]
timeToRun ---> 4767 msec
By cheating...
LogicalFont>>height
^200
LogicalFont>>width
^200
then timeToRun ---> 45msec.
With...
LogicalFont>>height
self realFont "height".
^200.
then timeToRun ---> 1929msec.
If I revert the changes above and then do...
LogicalFont>>realFont
"Smalltalk at: #btcHack put: Bag new"
^realFont ifNil: [
(Smalltalk at: #btcHack) add: #count.
realFont := self findRealFont] ^
then timeToRun --> 4076
and (Smalltalk at: #btcHack) occurrencesOf: #count ---> 587 times it
runs
#findRealFont.
This might not be the proper place to do caching, but if change this
to...
LogicalFont>>realFont
| cache |
cache := Smalltalk at: #btcHack2 ifAbsentPut: Dictionary new.
^realFont ifNil: [ cache at: self printString ifAbsentPut: [ self
findRealFont
] ]
then timeToRun --> 1482msec.
cheers, Ben
Tudor Girba wrote:
> Here is more information about the problem: as said, the issue comes
from
> widthOfString:. So, I tested the basic
infrastructure:
>
> [10 to: 100 do: [ :x |
> (LogicalFont familyName: 'Arial' pointSize: x)
> widthOfString: 'test' ]] timeToRun
>
> This one gets ==> 5s
>
> So, where are the rest of the 20s being spent in Roassal? Essentially,
> given that Roassal will get a new logical font instance every time it
tries
> to display, it essentially slows down
everything in the image when
multiple
> fonts are displayed.
>
> I think we should find a way to cache the logical fonts in
> ROFontOrganizerAthens, or at least to provide the ability to set the
font
> from outside in ROAbstractLabel (rather than
just provide the font
size).
>
> Cheers,
> Doru
>
>
>
>
>
> On Sat, Aug 24, 2013 at 9:34 AM, Tudor Girba
> <tudor(a)tudorgirba.com>
> wrote:
>
>
>
>> Indeed, the issue we have is related to real font caching. It would be
>> great to get a working solution for this. I guess this will not be
>> available in Pharo 2.0 (it would make sense to focus on Pharo 3.0), but
>> maybe we can get some hints as to how to build a little workaround.
>>
>> I would like to release the Moose 4.8 image with Athens enabled, but I
am
>> not sure it's a good idea with this
little issue inside.
>>
>> Doru
>>
>>
>> On Fri, Aug 23, 2013 at 10:58 PM, Stéphane Ducasse <
>>
>> stephane.ducasse(a)inria.fr
>> > wrote:
>>
>>
>>
>>> Igor is working out on textEditor with fernando and they are making
>>> progress.
>>> I know that igor want to build a cache for fonts and that now he
changed
>>> the API of Cairo because the previous
one was making approximations
that
>>> led to
>>> problems when zooming (and then to identify character under the
mouse).
>>> Now I do not know how and if it will
have an impact (probably on this
>>> one).
>>> One objectives is also to see how to reuse some of the morphs made on
top
>>> of Rubric (but not rubric because it
is based on the old and bad
paragraph
>>> editor).
>>>
>>> Stef
>>>
>>> Hi,
>>>
>>> Try this:
>>> [view := ROMondrianViewBuilder new.
>>> view shape label fontSize: [:x | x ].
>>> view nodes: (10 to: 100).
>>> view open] timeToRun
>>>
>>> On my MacBookPro i7 2.6 GHz this takes 23s.
>>>
>>> The actual reason is that LogicalFont>>widthOfString: looks up the
real
>>> font when the font is not yet cached.
And this ends up looking for
files on
>>> the disk.
>>>
>>> I do not know an easy way out, but as it is, we cannot use font
scaling
>>> essentially. And because of that,
visualizations like Annotation
>>> Constellation are not practicable anymore:
>>>
>>>
>>>
http://www.themoosebook.org/book/externals/visualizations/annotation-conste…
>
>
> Cheers,
> Doru
>
> --
>
>
www.tudorgirba.com
>
>
> "Every thing has its own flow"
> _______________________________________________
> Moose-dev mailing list
>
> Moose-dev(a)iam.unibe.ch
>
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
>
> Moose-dev(a)iam.unibe.ch
>
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
>
>
>
>
--
www.tudorgirba.com
"Every thing has its own flow"
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel
http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev