Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 2 participants
- 144614 messages
Re: [Pharo-project] About the download page
by Adrian Lienhard
Hi Hernan,
Thanks for the feedback and updating that page.
Please note that:
- There is no release of Pharo yet, not even a beta version is out,
which means that a lot of work, including the web site, is work in
progress
- The google project is for Pharo core developers, while www.pharo-project.org
is for its users
If you like to further help with instructions for the google project
or the web page, you're welcome!
Cheers,
Adrian
On Feb 8, 2009, at 18:40 , Hernán Morales Durand wrote:
> Possibly, a one-click image could lighten the initial cognitive
> load to
> start using Pharo, but being a begginer do not should imply he must
> download
> a specific version, to be careful in this sense means recommend and
> not
> impose. One can be a begginer in Pharo but not in Smalltalk, or a
> begginer
> with an exploratory mentality, and this exploration could be
> directed by
> specific interests (business, research, etc), so I can be a begginer
> in
> Pharo and want to see alternatives in the first place.
> Anyway, I've updated the page
> http://code.google.com/p/pharo/wiki/Downloads?tm=2
> Best regards
>
> Hernán
>
> 2009/2/8 Michael Rueger <m.rueger(a)acm.org>
>
>> wouldn't most of the problems fixed by pointing beginners to the one
>> click version of Pharo?
>>
>> Michael
>>
>> On Sun, Feb 8, 2009 at 8:14 AM, Hernán Morales Durand
>> <hernan.morales(a)gmail.com> wrote:
>>> Let's suppose I'm a first visitor reading this page:
>>>
>>> http://code.google.com/p/pharo/wiki/Downloads?tm=2
>>>
>>> " ... A link is given below to get the image ... "
>>> There are various links below, specifically what is that link?
>> (Suggestion:
>>> anchor the link word)
>>>
>>> " ... You can either upgrade your image ... "
>>> Any hint or link explaining how?
>>>
>>> " ... The virtual machine may be downloaded from ... "
>>> Suggestion:
>>> " ... The virtual machine [for the X Operating System] may be
>>> downloaded
>>> from ... " and then
>>> "The virtual machine [for the Y Operating System] may be
>>> downloaded from
>> ...
>>> "
>>>
>>> " ... The lastest VM available ... "
>>> " ... The latest VM available ... " (typo)
>>>
>>> " Pharo files are still hosted at the Pharo INRIA project site. "
>>> From an user point of view I don't know why that would be relevant.
>>>
>>> " Please head over to http://gforge.inria.fr/frs/?group_id=1299 "
>>> To get the image ? the image and VM ? to choose downloading
>>> options ?
>>> (what I mean is that isn't clear the "image" reference at the
>>> beggining
>> of
>>> page refers to this link or the "specific files" link below).
>>>
>>> " Here are some links to specific files:
>>> Pharo Core: Pharo0.1Core-10204.zip "
>>> Suggestion:
>>> " If you want to do/have/use X, you can download Pharo Core... "
>>> " If you want to do/have/use Y, you can download Pharo
>>> Developer... "
>>> etc.
>>>
>>> Final notes:
>>> -There is no "Installation instructions" guidelines or link, this
>> commonly
>>> is: "When download is completed, uncompress.... get a
>>> mysterious .sources
>>> file, and then copy the .exe there......"
>>> -Still remain assumptions for a first visitor, like he already
>>> knows what
>> is
>>> an image, a virtual machine. Many first visitors are outsiders and
>>> they
>>> download first, read later (show me don't tell me). My suggestion
>>> is to
>>> provide a link/page in key words "image", "virtual machine", I guess
>> there
>>> are many sites where this is explained easily; and a reference
>>> link, to
>> the
>>> SqueakByExample book for example, for people who wants to read more.
>>> Just a couple of suggestions.
>>>
>>> Cheers
>>>
>>> Hernán
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 8, 2009
[Pharo-project] [ANN] updates
by Stéphane Ducasse
10227
Some Etoy cleaning
- ActorState removal
- uniqueReferences...
10228
Monticello merged loader changes (mike rueger)
MonticelloConfigurations merged with impara MonticelloConfigurations-
jl.43
mainly adds "atomic" loading
ScriptLoader adding configuration map loading support
Stef, Marcus and Gwenael (sprinting at Stef's place)
Feb. 8, 2009
Re: [Pharo-project] About the download page
by Hernán Morales Durand
Possibly, a one-click image could lighten the initial cognitive load to
start using Pharo, but being a begginer do not should imply he must download
a specific version, to be careful in this sense means recommend and not
impose. One can be a begginer in Pharo but not in Smalltalk, or a begginer
with an exploratory mentality, and this exploration could be directed by
specific interests (business, research, etc), so I can be a begginer in
Pharo and want to see alternatives in the first place.
Anyway, I've updated the page
http://code.google.com/p/pharo/wiki/Downloads?tm=2
Best regards
Hernán
2009/2/8 Michael Rueger <m.rueger(a)acm.org>
> wouldn't most of the problems fixed by pointing beginners to the one
> click version of Pharo?
>
> Michael
>
> On Sun, Feb 8, 2009 at 8:14 AM, Hernán Morales Durand
> <hernan.morales(a)gmail.com> wrote:
> > Let's suppose I'm a first visitor reading this page:
> >
> > http://code.google.com/p/pharo/wiki/Downloads?tm=2
> >
> > " ... A link is given below to get the image ... "
> > There are various links below, specifically what is that link?
> (Suggestion:
> > anchor the link word)
> >
> > " ... You can either upgrade your image ... "
> > Any hint or link explaining how?
> >
> > " ... The virtual machine may be downloaded from ... "
> > Suggestion:
> > " ... The virtual machine [for the X Operating System] may be downloaded
> > from ... " and then
> > "The virtual machine [for the Y Operating System] may be downloaded from
> ...
> > "
> >
> > " ... The lastest VM available ... "
> > " ... The latest VM available ... " (typo)
> >
> > " Pharo files are still hosted at the Pharo INRIA project site. "
> > From an user point of view I don't know why that would be relevant.
> >
> > " Please head over to http://gforge.inria.fr/frs/?group_id=1299 "
> > To get the image ? the image and VM ? to choose downloading options ?
> > (what I mean is that isn't clear the "image" reference at the beggining
> of
> > page refers to this link or the "specific files" link below).
> >
> > " Here are some links to specific files:
> > Pharo Core: Pharo0.1Core-10204.zip "
> > Suggestion:
> > " If you want to do/have/use X, you can download Pharo Core... "
> > " If you want to do/have/use Y, you can download Pharo Developer... "
> > etc.
> >
> > Final notes:
> > -There is no "Installation instructions" guidelines or link, this
> commonly
> > is: "When download is completed, uncompress.... get a mysterious .sources
> > file, and then copy the .exe there......"
> > -Still remain assumptions for a first visitor, like he already knows what
> is
> > an image, a virtual machine. Many first visitors are outsiders and they
> > download first, read later (show me don't tell me). My suggestion is to
> > provide a link/page in key words "image", "virtual machine", I guess
> there
> > are many sites where this is explained easily; and a reference link, to
> the
> > SqueakByExample book for example, for people who wants to read more.
> > Just a couple of suggestions.
> >
> > Cheers
> >
> > Hernán
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Feb. 8, 2009
[Pharo-project] Concerning issue #264
by Igor Stasenko
Hi Markus,
i have some comments about morphs :)
To my personal feel, a drop shadow feature (and all what is connected
with it) is quite controversial,
i don't think its worth promoting hasDropShadow shadowOffset to ivars.
Instead, i think its worth demoting these ones to a void! :)
Can anyone tell me why morph (and moreover - canvas) should be aware
of a shadows effect?
And what if i want a glow effect instead? Will you extend/expand both
morphs/canvas protocol to support it too? Will you sacrifice ivars for
it? :)
What if tomorrow i want another myCoolSpecialEffect to be there? Will
you force a Morph and Canvas be aware of that?
I think no.
I think all special effects should be
a) removed
b) reintroduced using different means.
No Morph (abstract class) should be aware of any special effects, like
it currently hardcoded in #fullDrawOn:
self hasDropShadow ifTrue: [self drawDropShadowOn: aCanvas].
(self hasRolloverBorder and: [(aCanvas seesNothingOutside: self bounds) not])
ifTrue: [self drawRolloverBorderOn: aCanvas].
i think such code is candidate for removal.
Instead, if we need to, we could simply put:
self drawSpecialEffectsOn: aCanvas.
--
Best regards,
Igor Stasenko AKA sig.
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Stéphane Ducasse
Tx igor.
:)
I'm looking for examples to teach people how to benchmark.
Stef
On Feb 8, 2009, at 5:42 PM, Igor Stasenko wrote:
> for automated benchmarking i can imagine something like following:
>
> benchButton
> | browser button canvas time |
> browser := OBPackageBrowser openOnClass: Object selector: #yourself.
> browser position: 0@0.
> button := browser allMorphs detect: [:m | (m
> isKindOf:PluggableButtonMorph ) and: [ m label = 'browse' ]].
>
> canvas := World assuredCanvas.
> time := [1000 timesRepeat: [ button fullDrawOn: canvas ]] timeToRun.
> browser delete.
> ^ time
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Igor Stasenko
for automated benchmarking i can imagine something like following:
benchButton
| browser button canvas time |
browser := OBPackageBrowser openOnClass: Object selector: #yourself.
browser position: 0@0.
button := browser allMorphs detect: [:m | (m
isKindOf:PluggableButtonMorph ) and: [ m label = 'browse' ]].
canvas := World assuredCanvas.
time := [1000 timesRepeat: [ button fullDrawOn: canvas ]] timeToRun.
browser delete.
^ time
--
Best regards,
Igor Stasenko AKA sig.
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Igor Stasenko
2009/2/8 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>>
>>> Igor could you give us the snippets for the benchmarks.
>>> I would like to use them as example for a forthcoming chapter on
>>> profiling.
>>>
>>
>> What exactly snippets you want?
>
> the one where you create the button and how you measure it :)
heh.. why i should care to create a button, when i got plenty of them
on the screen? :)
i simply clicking through morphs until i got button morph halo, and
then doing 'inspect morph'.
the rest is then trivial, in inspector window you can send any
messages to this morph,
like:
self drawOn: World assuredCanvas.
;)
>
>>
>> I'm using most simple ways to measure performance, including:
>>
>> [ .... ] timeToRun.
>> or
>> MessageTally spyOn: [...]
>>
>> i made a simple class GlobalCounter
>>
>> to use a
>> GlobalCounter increment: 'some id'
>>
>> in methods i'm interested in and then run some code like following:
>>
>> GlobalCounter reset.
>> mycode run.
>> GlobalCounter counters copy "inspect"
>>
>> GlobalCounter implementation is trivial, i don't think it requires any
>> explanation how it works :)
>>
>>> Stef
>>>
>>> On Feb 8, 2009, at 2:55 PM, Igor Stasenko wrote:
>>>
>>>> I'm also want to play with rounding and compare the efficiency of
>>>> drawing an initially rounded shape (by using curves) instead of
>>>> hacking , which CornerRounder does.
>>>>
>>>> I took a single rounded button and measured how fast it get drawn
>>>> and
>>>> what parts of drawing process takes what time:
>>>>
>>>> 100 times
>>>> - fulldraw 80ms
>>>> - (1) draw 18ms (simple fill a rectangle)
>>>> - (2) fulldraw w/o rounding 51ms (almost same as a fulldraw but w/o
>>>> use of CorderRounder)
>>>>
>>>> so, CornerRounder takes 30ms for itself (from total 80ms).
>>>> I think if we initially draw a rounded shape, we could have better
>>>> numbers , i hoping that drawing a filled rectangular shape and
>>>> filled
>>>> rounded rectangular shape could have much less difference (much less
>>>> than 30ms).
>>>> It's a bit expensive to spend 3/8 of total rendering time for such
>>>> little fancy thing :)
>>>>
>>>> 2009/2/8 Igor Stasenko <siguctua(a)gmail.com>:
>>>>> 2009/2/8 Gary Chambers <gazzaguru2(a)btinternet.com>:
>>>>>> I'll make the drop shadows themable for system windows.
>>>>>> The default way Morphic does drop shadows is quite inefficient.
>>>>>>
>>>>>
>>>>> Right, i think it would be wise to provide own implementation of
>>>>> drawDropShadowOn: for SystemWindow, to draw simple rectangle (or
>>>>> group
>>>>> of rectangles to avoid excessive fills) since we know that
>>>>> systemwindow is rectangular beforehead.
>>>>>
>>>>>
>>>>>> Regards, Gary
>>>>>>
>>>>>> ----- Original Message -----
>>>>>> From: "Igor Stasenko" <siguctua(a)gmail.com>
>>>>>> To: <Pharo-project(a)lists.gforge.inria.fr>
>>>>>> Sent: Saturday, February 07, 2009 7:23 PM
>>>>>> Subject: Re: [Pharo-project] Call for UI gripes
>>>>>>
>>>>>>
>>>>>>> 2009/2/7 Ramon Leon <ramon.leon(a)allresnet.com>:
>>>>>>>>> The biggest concern I have right now is speed. I'm not
>>>>>>>>> saying Pharo is too slow; I'm simply admitting that I do not
>>>>>>>>> know whether it is fast enough for some of the things I want to
>>>>>>>>> do.
>>>>>>>>
>>>>>>>> +10 to this.
>>>>>>>>
>>>>>>>> The UI is looking really great lately, but overall the
>>>>>>>> experience is it's
>>>>>>>> just too slow. Cracking open a raw squeak base image reminds me
>>>>>>>> how
>>>>>>>> snappy
>>>>>>>> the UI used to be. Not really complaining, it's totally
>>>>>>>> bearable, but
>>>>>>>> it'd
>>>>>>>> sure be nice if the pretty UI was quick and snappy, and you are
>>>>>>>> asking.
>>>>>>>>
>>>>>>> Sure thing
>>>>>>> MessageTally spyOn:[self fullDrawOn: World assuredCanvas] "where
>>>>>>> self
>>>>>>> is an OB system window morph"
>>>>>>>
>>>>>>> 16.7% {10ms} BalloonEngine>>copyLoopFaster
>>>>>>> 11.7% {7ms} SimpleBorder>>frameRectangle:on:
>>>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>>>> 5.0% {3ms} SmallInteger(Number)>>to:by:do:
>>>>>>> 5.0% {3ms}
>>>>>>> GrafPort(BitBlt)>>primDisplayString:from:to:map:xTable:kern:
>>>>>>> 5.0% {3ms} BorderStyle>>frameRectangle:on:
>>>>>>> 3.3% {2ms} ByteSymbol>>species
>>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>>
>>>>>>> total 61ms.
>>>>>>>
>>>>>>> some hot points crying to be optimized:
>>>>>>> cache the OBMonticelloPackageNode>>classCategories , which get
>>>>>>> rebuilt each time you draw the window.
>>>>>>> this can make following numbers much smaller:
>>>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>>
>>>>>>> Making SystemWindow>>drawDropShadowOn: to do nothing makes a
>>>>>>> difference:
>>>>>>>
>>>>>>> [10 timesRepeat: [self fullDrawOn: World assuredCanvas ]]
>>>>>>> timeToRun
>>>>>>> with shadows: 530
>>>>>>> without: 473
>>>>>>> ~ 10% speedup
>>>>>>>
>>>>>>> Changing the theme makes some difference (no shadows/with
>>>>>>> shadows):
>>>>>>> - Watery 2: 50/60 ms
>>>>>>> - Standard Squeak: 38/43 ms
>>>>>>> - Soft Squeak: 46/55 ms
>>>>>>> - Vistary: 56/62ms
>>>>>>> (keep in mind these numbers are polluted with messageTally)
>>>>>>>
>>>>>>> As to me, the theme variancy is quite acceptable - a most complex
>>>>>>> theme (with transulency) is drawn just 50% slower than most
>>>>>>> simple
>>>>>>> one.
>>>>>>>
>>>>>>> As for,
>>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>>
>>>>>>> Total count of ByteString>>new: calls during
>>>>>>> GlobalCounter reset.
>>>>>>> self fullDrawOn: World assuredCanvas.
>>>>>>> GlobalCounter counters copy inspect
>>>>>>>
>>>>>>> is 7146,
>>>>>>> which again makes me look suspicious at OB here.. Hey! Are we
>>>>>>> drawing,
>>>>>>> or processing a text?!?!
>>>>>>>
>>>>>>>
>>>>>>>> Ramon Leon
>>>>>>>> http://onsmalltalk.com
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Pharo-project mailing list
>>>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>>>>> project
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>> Igor Stasenko AKA sig.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Pharo-project mailing list
>>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>>> project
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko AKA sig.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>> <GlobalCounter.st>_______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Stéphane Ducasse
>
>> Igor could you give us the snippets for the benchmarks.
>> I would like to use them as example for a forthcoming chapter on
>> profiling.
>>
>
> What exactly snippets you want?
the one where you create the button and how you measure it :)
>
> I'm using most simple ways to measure performance, including:
>
> [ .... ] timeToRun.
> or
> MessageTally spyOn: [...]
>
> i made a simple class GlobalCounter
>
> to use a
> GlobalCounter increment: 'some id'
>
> in methods i'm interested in and then run some code like following:
>
> GlobalCounter reset.
> mycode run.
> GlobalCounter counters copy "inspect"
>
> GlobalCounter implementation is trivial, i don't think it requires any
> explanation how it works :)
>
>> Stef
>>
>> On Feb 8, 2009, at 2:55 PM, Igor Stasenko wrote:
>>
>>> I'm also want to play with rounding and compare the efficiency of
>>> drawing an initially rounded shape (by using curves) instead of
>>> hacking , which CornerRounder does.
>>>
>>> I took a single rounded button and measured how fast it get drawn
>>> and
>>> what parts of drawing process takes what time:
>>>
>>> 100 times
>>> - fulldraw 80ms
>>> - (1) draw 18ms (simple fill a rectangle)
>>> - (2) fulldraw w/o rounding 51ms (almost same as a fulldraw but w/o
>>> use of CorderRounder)
>>>
>>> so, CornerRounder takes 30ms for itself (from total 80ms).
>>> I think if we initially draw a rounded shape, we could have better
>>> numbers , i hoping that drawing a filled rectangular shape and
>>> filled
>>> rounded rectangular shape could have much less difference (much less
>>> than 30ms).
>>> It's a bit expensive to spend 3/8 of total rendering time for such
>>> little fancy thing :)
>>>
>>> 2009/2/8 Igor Stasenko <siguctua(a)gmail.com>:
>>>> 2009/2/8 Gary Chambers <gazzaguru2(a)btinternet.com>:
>>>>> I'll make the drop shadows themable for system windows.
>>>>> The default way Morphic does drop shadows is quite inefficient.
>>>>>
>>>>
>>>> Right, i think it would be wise to provide own implementation of
>>>> drawDropShadowOn: for SystemWindow, to draw simple rectangle (or
>>>> group
>>>> of rectangles to avoid excessive fills) since we know that
>>>> systemwindow is rectangular beforehead.
>>>>
>>>>
>>>>> Regards, Gary
>>>>>
>>>>> ----- Original Message -----
>>>>> From: "Igor Stasenko" <siguctua(a)gmail.com>
>>>>> To: <Pharo-project(a)lists.gforge.inria.fr>
>>>>> Sent: Saturday, February 07, 2009 7:23 PM
>>>>> Subject: Re: [Pharo-project] Call for UI gripes
>>>>>
>>>>>
>>>>>> 2009/2/7 Ramon Leon <ramon.leon(a)allresnet.com>:
>>>>>>>> The biggest concern I have right now is speed. I'm not
>>>>>>>> saying Pharo is too slow; I'm simply admitting that I do not
>>>>>>>> know whether it is fast enough for some of the things I want to
>>>>>>>> do.
>>>>>>>
>>>>>>> +10 to this.
>>>>>>>
>>>>>>> The UI is looking really great lately, but overall the
>>>>>>> experience is it's
>>>>>>> just too slow. Cracking open a raw squeak base image reminds me
>>>>>>> how
>>>>>>> snappy
>>>>>>> the UI used to be. Not really complaining, it's totally
>>>>>>> bearable, but
>>>>>>> it'd
>>>>>>> sure be nice if the pretty UI was quick and snappy, and you are
>>>>>>> asking.
>>>>>>>
>>>>>> Sure thing
>>>>>> MessageTally spyOn:[self fullDrawOn: World assuredCanvas] "where
>>>>>> self
>>>>>> is an OB system window morph"
>>>>>>
>>>>>> 16.7% {10ms} BalloonEngine>>copyLoopFaster
>>>>>> 11.7% {7ms} SimpleBorder>>frameRectangle:on:
>>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>>> 5.0% {3ms} SmallInteger(Number)>>to:by:do:
>>>>>> 5.0% {3ms}
>>>>>> GrafPort(BitBlt)>>primDisplayString:from:to:map:xTable:kern:
>>>>>> 5.0% {3ms} BorderStyle>>frameRectangle:on:
>>>>>> 3.3% {2ms} ByteSymbol>>species
>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>
>>>>>> total 61ms.
>>>>>>
>>>>>> some hot points crying to be optimized:
>>>>>> cache the OBMonticelloPackageNode>>classCategories , which get
>>>>>> rebuilt each time you draw the window.
>>>>>> this can make following numbers much smaller:
>>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>
>>>>>> Making SystemWindow>>drawDropShadowOn: to do nothing makes a
>>>>>> difference:
>>>>>>
>>>>>> [10 timesRepeat: [self fullDrawOn: World assuredCanvas ]]
>>>>>> timeToRun
>>>>>> with shadows: 530
>>>>>> without: 473
>>>>>> ~ 10% speedup
>>>>>>
>>>>>> Changing the theme makes some difference (no shadows/with
>>>>>> shadows):
>>>>>> - Watery 2: 50/60 ms
>>>>>> - Standard Squeak: 38/43 ms
>>>>>> - Soft Squeak: 46/55 ms
>>>>>> - Vistary: 56/62ms
>>>>>> (keep in mind these numbers are polluted with messageTally)
>>>>>>
>>>>>> As to me, the theme variancy is quite acceptable - a most complex
>>>>>> theme (with transulency) is drawn just 50% slower than most
>>>>>> simple
>>>>>> one.
>>>>>>
>>>>>> As for,
>>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>>
>>>>>> Total count of ByteString>>new: calls during
>>>>>> GlobalCounter reset.
>>>>>> self fullDrawOn: World assuredCanvas.
>>>>>> GlobalCounter counters copy inspect
>>>>>>
>>>>>> is 7146,
>>>>>> which again makes me look suspicious at OB here.. Hey! Are we
>>>>>> drawing,
>>>>>> or processing a text?!?!
>>>>>>
>>>>>>
>>>>>>> Ramon Leon
>>>>>>> http://onsmalltalk.com
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Pharo-project mailing list
>>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>>>> project
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards,
>>>>>> Igor Stasenko AKA sig.
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>> project
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
> <GlobalCounter.st>_______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Igor Stasenko
2009/2/8 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
> Igor could you give us the snippets for the benchmarks.
> I would like to use them as example for a forthcoming chapter on
> profiling.
>
What exactly snippets you want?
I'm using most simple ways to measure performance, including:
[ .... ] timeToRun.
or
MessageTally spyOn: [...]
i made a simple class GlobalCounter
to use a
GlobalCounter increment: 'some id'
in methods i'm interested in and then run some code like following:
GlobalCounter reset.
mycode run.
GlobalCounter counters copy "inspect"
GlobalCounter implementation is trivial, i don't think it requires any
explanation how it works :)
> Stef
>
> On Feb 8, 2009, at 2:55 PM, Igor Stasenko wrote:
>
>> I'm also want to play with rounding and compare the efficiency of
>> drawing an initially rounded shape (by using curves) instead of
>> hacking , which CornerRounder does.
>>
>> I took a single rounded button and measured how fast it get drawn and
>> what parts of drawing process takes what time:
>>
>> 100 times
>> - fulldraw 80ms
>> - (1) draw 18ms (simple fill a rectangle)
>> - (2) fulldraw w/o rounding 51ms (almost same as a fulldraw but w/o
>> use of CorderRounder)
>>
>> so, CornerRounder takes 30ms for itself (from total 80ms).
>> I think if we initially draw a rounded shape, we could have better
>> numbers , i hoping that drawing a filled rectangular shape and filled
>> rounded rectangular shape could have much less difference (much less
>> than 30ms).
>> It's a bit expensive to spend 3/8 of total rendering time for such
>> little fancy thing :)
>>
>> 2009/2/8 Igor Stasenko <siguctua(a)gmail.com>:
>>> 2009/2/8 Gary Chambers <gazzaguru2(a)btinternet.com>:
>>>> I'll make the drop shadows themable for system windows.
>>>> The default way Morphic does drop shadows is quite inefficient.
>>>>
>>>
>>> Right, i think it would be wise to provide own implementation of
>>> drawDropShadowOn: for SystemWindow, to draw simple rectangle (or
>>> group
>>> of rectangles to avoid excessive fills) since we know that
>>> systemwindow is rectangular beforehead.
>>>
>>>
>>>> Regards, Gary
>>>>
>>>> ----- Original Message -----
>>>> From: "Igor Stasenko" <siguctua(a)gmail.com>
>>>> To: <Pharo-project(a)lists.gforge.inria.fr>
>>>> Sent: Saturday, February 07, 2009 7:23 PM
>>>> Subject: Re: [Pharo-project] Call for UI gripes
>>>>
>>>>
>>>>> 2009/2/7 Ramon Leon <ramon.leon(a)allresnet.com>:
>>>>>>> The biggest concern I have right now is speed. I'm not
>>>>>>> saying Pharo is too slow; I'm simply admitting that I do not
>>>>>>> know whether it is fast enough for some of the things I want to
>>>>>>> do.
>>>>>>
>>>>>> +10 to this.
>>>>>>
>>>>>> The UI is looking really great lately, but overall the
>>>>>> experience is it's
>>>>>> just too slow. Cracking open a raw squeak base image reminds me
>>>>>> how
>>>>>> snappy
>>>>>> the UI used to be. Not really complaining, it's totally
>>>>>> bearable, but
>>>>>> it'd
>>>>>> sure be nice if the pretty UI was quick and snappy, and you are
>>>>>> asking.
>>>>>>
>>>>> Sure thing
>>>>> MessageTally spyOn:[self fullDrawOn: World assuredCanvas] "where
>>>>> self
>>>>> is an OB system window morph"
>>>>>
>>>>> 16.7% {10ms} BalloonEngine>>copyLoopFaster
>>>>> 11.7% {7ms} SimpleBorder>>frameRectangle:on:
>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>> 5.0% {3ms} SmallInteger(Number)>>to:by:do:
>>>>> 5.0% {3ms}
>>>>> GrafPort(BitBlt)>>primDisplayString:from:to:map:xTable:kern:
>>>>> 5.0% {3ms} BorderStyle>>frameRectangle:on:
>>>>> 3.3% {2ms} ByteSymbol>>species
>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>
>>>>> total 61ms.
>>>>>
>>>>> some hot points crying to be optimized:
>>>>> cache the OBMonticelloPackageNode>>classCategories , which get
>>>>> rebuilt each time you draw the window.
>>>>> this can make following numbers much smaller:
>>>>> 5.0% {3ms} ByteString(String)>>=
>>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>
>>>>> Making SystemWindow>>drawDropShadowOn: to do nothing makes a
>>>>> difference:
>>>>>
>>>>> [10 timesRepeat: [self fullDrawOn: World assuredCanvas ]] timeToRun
>>>>> with shadows: 530
>>>>> without: 473
>>>>> ~ 10% speedup
>>>>>
>>>>> Changing the theme makes some difference (no shadows/with shadows):
>>>>> - Watery 2: 50/60 ms
>>>>> - Standard Squeak: 38/43 ms
>>>>> - Soft Squeak: 46/55 ms
>>>>> - Vistary: 56/62ms
>>>>> (keep in mind these numbers are polluted with messageTally)
>>>>>
>>>>> As to me, the theme variancy is quite acceptable - a most complex
>>>>> theme (with transulency) is drawn just 50% slower than most simple
>>>>> one.
>>>>>
>>>>> As for,
>>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>>
>>>>> Total count of ByteString>>new: calls during
>>>>> GlobalCounter reset.
>>>>> self fullDrawOn: World assuredCanvas.
>>>>> GlobalCounter counters copy inspect
>>>>>
>>>>> is 7146,
>>>>> which again makes me look suspicious at OB here.. Hey! Are we
>>>>> drawing,
>>>>> or processing a text?!?!
>>>>>
>>>>>
>>>>>> Ramon Leon
>>>>>> http://onsmalltalk.com
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>>> project
>>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko AKA sig.
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Feb. 8, 2009
Re: [Pharo-project] Call for UI gripes
by Stéphane Ducasse
Igor could you give us the snippets for the benchmarks.
I would like to use them as example for a forthcoming chapter on
profiling.
Stef
On Feb 8, 2009, at 2:55 PM, Igor Stasenko wrote:
> I'm also want to play with rounding and compare the efficiency of
> drawing an initially rounded shape (by using curves) instead of
> hacking , which CornerRounder does.
>
> I took a single rounded button and measured how fast it get drawn and
> what parts of drawing process takes what time:
>
> 100 times
> - fulldraw 80ms
> - (1) draw 18ms (simple fill a rectangle)
> - (2) fulldraw w/o rounding 51ms (almost same as a fulldraw but w/o
> use of CorderRounder)
>
> so, CornerRounder takes 30ms for itself (from total 80ms).
> I think if we initially draw a rounded shape, we could have better
> numbers , i hoping that drawing a filled rectangular shape and filled
> rounded rectangular shape could have much less difference (much less
> than 30ms).
> It's a bit expensive to spend 3/8 of total rendering time for such
> little fancy thing :)
>
> 2009/2/8 Igor Stasenko <siguctua(a)gmail.com>:
>> 2009/2/8 Gary Chambers <gazzaguru2(a)btinternet.com>:
>>> I'll make the drop shadows themable for system windows.
>>> The default way Morphic does drop shadows is quite inefficient.
>>>
>>
>> Right, i think it would be wise to provide own implementation of
>> drawDropShadowOn: for SystemWindow, to draw simple rectangle (or
>> group
>> of rectangles to avoid excessive fills) since we know that
>> systemwindow is rectangular beforehead.
>>
>>
>>> Regards, Gary
>>>
>>> ----- Original Message -----
>>> From: "Igor Stasenko" <siguctua(a)gmail.com>
>>> To: <Pharo-project(a)lists.gforge.inria.fr>
>>> Sent: Saturday, February 07, 2009 7:23 PM
>>> Subject: Re: [Pharo-project] Call for UI gripes
>>>
>>>
>>>> 2009/2/7 Ramon Leon <ramon.leon(a)allresnet.com>:
>>>>>> The biggest concern I have right now is speed. I'm not
>>>>>> saying Pharo is too slow; I'm simply admitting that I do not
>>>>>> know whether it is fast enough for some of the things I want to
>>>>>> do.
>>>>>
>>>>> +10 to this.
>>>>>
>>>>> The UI is looking really great lately, but overall the
>>>>> experience is it's
>>>>> just too slow. Cracking open a raw squeak base image reminds me
>>>>> how
>>>>> snappy
>>>>> the UI used to be. Not really complaining, it's totally
>>>>> bearable, but
>>>>> it'd
>>>>> sure be nice if the pretty UI was quick and snappy, and you are
>>>>> asking.
>>>>>
>>>> Sure thing
>>>> MessageTally spyOn:[self fullDrawOn: World assuredCanvas] "where
>>>> self
>>>> is an OB system window morph"
>>>>
>>>> 16.7% {10ms} BalloonEngine>>copyLoopFaster
>>>> 11.7% {7ms} SimpleBorder>>frameRectangle:on:
>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>> 5.0% {3ms} ByteString(String)>>=
>>>> 5.0% {3ms} SmallInteger(Number)>>to:by:do:
>>>> 5.0% {3ms}
>>>> GrafPort(BitBlt)>>primDisplayString:from:to:map:xTable:kern:
>>>> 5.0% {3ms} BorderStyle>>frameRectangle:on:
>>>> 3.3% {2ms} ByteSymbol>>species
>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>
>>>> total 61ms.
>>>>
>>>> some hot points crying to be optimized:
>>>> cache the OBMonticelloPackageNode>>classCategories , which get
>>>> rebuilt each time you draw the window.
>>>> this can make following numbers much smaller:
>>>> 5.0% {3ms} ByteString(String)>>=
>>>> 6.7% {4ms} Array(SequenceableCollection)>>select:
>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>
>>>> Making SystemWindow>>drawDropShadowOn: to do nothing makes a
>>>> difference:
>>>>
>>>> [10 timesRepeat: [self fullDrawOn: World assuredCanvas ]] timeToRun
>>>> with shadows: 530
>>>> without: 473
>>>> ~ 10% speedup
>>>>
>>>> Changing the theme makes some difference (no shadows/with shadows):
>>>> - Watery 2: 50/60 ms
>>>> - Standard Squeak: 38/43 ms
>>>> - Soft Squeak: 46/55 ms
>>>> - Vistary: 56/62ms
>>>> (keep in mind these numbers are polluted with messageTally)
>>>>
>>>> As to me, the theme variancy is quite acceptable - a most complex
>>>> theme (with transulency) is drawn just 50% slower than most simple
>>>> one.
>>>>
>>>> As for,
>>>> 3.3% {2ms} ByteString class(String class)>>new:
>>>>
>>>> Total count of ByteString>>new: calls during
>>>> GlobalCounter reset.
>>>> self fullDrawOn: World assuredCanvas.
>>>> GlobalCounter counters copy inspect
>>>>
>>>> is 7146,
>>>> which again makes me look suspicious at OB here.. Hey! Are we
>>>> drawing,
>>>> or processing a text?!?!
>>>>
>>>>
>>>>> Ramon Leon
>>>>> http://onsmalltalk.com
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>> project
>>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Feb. 8, 2009