Why is the squeak gui slow? New clues.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Why is the squeak gui slow? New clues.

Jerome Peace
Most of the time squeak is fast enough. Every so often the gui slows down to a crawl. The user moves the mouse around and the gui will not respond the way it did a moment ago. Movements feel spastic. The user overshoots the mark, moves back, over shoots again. Gradually learning to pause ...a...long...time...between...very...small...movements.

I was recently trying to program some improvements and did something I think sheds a light on the reason.

I was fooling with the handles for a star morph. There are only 6 of them. Currently they all are individual submorphs of the star itself. However it seemed it would simplify things if there was only one handle. The center handle would make a good holder for the other five.

When I finally got that working I ran into the problem that I mentioned in the first paragraph. The mouse gui became extremely retarded (in the time sense). This is consistent with what happens if you should run a mouse over true type fonts or flash morphs. The event processing slows down till it is painful to adjust to.

My previous thought was that only massive pixel processing (large amount of screen updates) would cause a gui slowdown. Now however I am beginning to realize that event dispatch must be a prime suspect as well.

That's all the info I have at the moment. I pass this along incase someone has some confirming or alternate information.

Yours in curiosity and service, --Jerome Peace


     

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Igor Stasenko
On 16 February 2010 20:38, Jerome Peace <[hidden email]> wrote:

> Most of the time squeak is fast enough. Every so often the gui slows down to a crawl. The user moves the mouse around and the gui will not respond the way it did a moment ago. Movements feel spastic. The user overshoots the mark, moves back, over shoots again. Gradually learning to pause ...a...long...time...between...very...small...movements.
>
> I was recently trying to program some improvements and did something I think sheds a light on the reason.
>
> I was fooling with the handles for a star morph. There are only 6 of them. Currently they all are individual submorphs of the star itself. However it seemed it would simplify things if there was only one handle. The center handle would make a good holder for the other five.
>
> When I finally got that working I ran into the problem that I mentioned in the first paragraph. The mouse gui became extremely retarded (in the time sense). This is consistent with what happens if you should run a mouse over true type fonts or flash morphs. The event processing slows down till it is painful to adjust to.
>
> My previous thought was that only massive pixel processing (large amount of screen updates) would cause a gui slowdown. Now however I am beginning to realize that event dispatch must be a prime suspect as well.
>
> That's all the info I have at the moment. I pass this along incase someone has some confirming or alternate information.
>

My 2 cents.
I played with morphic rendering code, where in my morph, all
attributes like color, border and many others retrieved from
dictionaries.
I expected that it may cause a major slowdown, but then discovered
that its not. It is slower of course, but not to the point, where it
becomes noticeable. So, i suspecting that bottlenecks is hidden
somewhere else.

Another observation is, that if you open many windows, things become
slower and slower , in linear progression.
The fact is, that in browser windows, most time spent on rendering
text (using highly complex Text & font rendering code).
So, Text rendering is a major bottleneck. And if we want to make an
improvements, we should attack this area.

> Yours in curiosity and service, --Jerome Peace
>


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Tom Rushworth-3
I haven't been actively using squeak for a while, but I vaguely recall  
it got really really slow when it was individually stepping a whole  
bunch of morphs (polymorph or linemorph???).  If you brought up a lot  
of whatever morph it was, they each had to be stepped, and that took  
forever.  My apologies for not being able to remember the details any  
better :(.


On 2010-Feb-16, at 11:09, Igor Stasenko wrote:

> On 16 February 2010 20:38, Jerome Peace  
> <[hidden email]> wrote:
>> Most of the time squeak is fast enough. Every so often the gui  
>> slows down to a crawl. The user moves the mouse around and the gui  
>> will not respond the way it did a moment ago. Movements feel  
>> spastic. The user overshoots the mark, moves back, over shoots  
>> again. Gradually learning to  
>> pause ...a...long...time...between...very...small...movements.
>>
>> I was recently trying to program some improvements and did  
>> something I think sheds a light on the reason.
>>
>> I was fooling with the handles for a star morph. There are only 6  
>> of them. Currently they all are individual submorphs of the star  
>> itself. However it seemed it would simplify things if there was  
>> only one handle. The center handle would make a good holder for the  
>> other five.
>>
>> When I finally got that working I ran into the problem that I  
>> mentioned in the first paragraph. The mouse gui became extremely  
>> retarded (in the time sense). This is consistent with what happens  
>> if you should run a mouse over true type fonts or flash morphs. The  
>> event processing slows down till it is painful to adjust to.
>>
>> My previous thought was that only massive pixel processing (large  
>> amount of screen updates) would cause a gui slowdown. Now however I  
>> am beginning to realize that event dispatch must be a prime suspect  
>> as well.
>>
>> That's all the info I have at the moment. I pass this along incase  
>> someone has some confirming or alternate information.
>>
>
> My 2 cents.
> I played with morphic rendering code, where in my morph, all
> attributes like color, border and many others retrieved from
> dictionaries.
> I expected that it may cause a major slowdown, but then discovered
> that its not. It is slower of course, but not to the point, where it
> becomes noticeable. So, i suspecting that bottlenecks is hidden
> somewhere else.
>
> Another observation is, that if you open many windows, things become
> slower and slower , in linear progression.
> The fact is, that in browser windows, most time spent on rendering
> text (using highly complex Text & font rendering code).
> So, Text rendering is a major bottleneck. And if we want to make an
> improvements, we should attack this area.
>
>> Yours in curiosity and service, --Jerome Peace
>>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>

--
Tom Rushworth




Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Nicolas Cellier
In reply to this post by Igor Stasenko
2010/2/16 Igor Stasenko <[hidden email]>:

> On 16 February 2010 20:38, Jerome Peace <[hidden email]> wrote:
>> Most of the time squeak is fast enough. Every so often the gui slows down to a crawl. The user moves the mouse around and the gui will not respond the way it did a moment ago. Movements feel spastic. The user overshoots the mark, moves back, over shoots again. Gradually learning to pause ...a...long...time...between...very...small...movements.
>>
>> I was recently trying to program some improvements and did something I think sheds a light on the reason.
>>
>> I was fooling with the handles for a star morph. There are only 6 of them. Currently they all are individual submorphs of the star itself. However it seemed it would simplify things if there was only one handle. The center handle would make a good holder for the other five.
>>
>> When I finally got that working I ran into the problem that I mentioned in the first paragraph. The mouse gui became extremely retarded (in the time sense). This is consistent with what happens if you should run a mouse over true type fonts or flash morphs. The event processing slows down till it is painful to adjust to.
>>
>> My previous thought was that only massive pixel processing (large amount of screen updates) would cause a gui slowdown. Now however I am beginning to realize that event dispatch must be a prime suspect as well.
>>
>> That's all the info I have at the moment. I pass this along incase someone has some confirming or alternate information.
>>
>
> My 2 cents.
> I played with morphic rendering code, where in my morph, all
> attributes like color, border and many others retrieved from
> dictionaries.
> I expected that it may cause a major slowdown, but then discovered
> that its not. It is slower of course, but not to the point, where it
> becomes noticeable. So, i suspecting that bottlenecks is hidden
> somewhere else.
>
> Another observation is, that if you open many windows, things become
> slower and slower , in linear progression.
> The fact is, that in browser windows, most time spent on rendering
> text (using highly complex Text & font rendering code).
> So, Text rendering is a major bottleneck. And if we want to make an
> improvements, we should attack this area.
>
>> Yours in curiosity and service, --Jerome Peace
>>
>

You can also try the preferences>debug>debug show damage just in case...
At least, it shows a problem with splitters (they invalidate the menu
bar... probably they invalidate at 0@0)
BTW doesn't splitters of minimized windows upset anybody ?

Nicolas

>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Igor Stasenko
On 17 February 2010 00:15, Nicolas Cellier
<[hidden email]> wrote:

> 2010/2/16 Igor Stasenko <[hidden email]>:
>> On 16 February 2010 20:38, Jerome Peace <[hidden email]> wrote:
>>> Most of the time squeak is fast enough. Every so often the gui slows down to a crawl. The user moves the mouse around and the gui will not respond the way it did a moment ago. Movements feel spastic. The user overshoots the mark, moves back, over shoots again. Gradually learning to pause ...a...long...time...between...very...small...movements.
>>>
>>> I was recently trying to program some improvements and did something I think sheds a light on the reason.
>>>
>>> I was fooling with the handles for a star morph. There are only 6 of them. Currently they all are individual submorphs of the star itself. However it seemed it would simplify things if there was only one handle. The center handle would make a good holder for the other five.
>>>
>>> When I finally got that working I ran into the problem that I mentioned in the first paragraph. The mouse gui became extremely retarded (in the time sense). This is consistent with what happens if you should run a mouse over true type fonts or flash morphs. The event processing slows down till it is painful to adjust to.
>>>
>>> My previous thought was that only massive pixel processing (large amount of screen updates) would cause a gui slowdown. Now however I am beginning to realize that event dispatch must be a prime suspect as well.
>>>
>>> That's all the info I have at the moment. I pass this along incase someone has some confirming or alternate information.
>>>
>>
>> My 2 cents.
>> I played with morphic rendering code, where in my morph, all
>> attributes like color, border and many others retrieved from
>> dictionaries.
>> I expected that it may cause a major slowdown, but then discovered
>> that its not. It is slower of course, but not to the point, where it
>> becomes noticeable. So, i suspecting that bottlenecks is hidden
>> somewhere else.
>>
>> Another observation is, that if you open many windows, things become
>> slower and slower , in linear progression.
>> The fact is, that in browser windows, most time spent on rendering
>> text (using highly complex Text & font rendering code).
>> So, Text rendering is a major bottleneck. And if we want to make an
>> improvements, we should attack this area.
>>
>>> Yours in curiosity and service, --Jerome Peace
>>>
>>
>
> You can also try the preferences>debug>debug show damage just in case...
> At least, it shows a problem with splitters (they invalidate the menu
> bar... probably they invalidate at 0@0)
> BTW doesn't splitters of minimized windows upset anybody ?
>
it does.. :)

> Nicolas
>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>>
>
>



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Chris Muller-3
In reply to this post by Jerome Peace
Jerome, I have experienced very similar symptoms in a Maui application
more than once.  My memory on this is vague, but I think the desktop
profile did show a ton of time being spent in TTFont rendering..  I
had been doing heavy development so I figured I goofed something up in
my image.

Another time it happened, I think the desktop profile showed a lot of
time in the finalization process..  Do you think that is a possibility
in your case?  Did you happen to capture a profile stack?


On Tue, Feb 16, 2010 at 12:38 PM, Jerome Peace
<[hidden email]> wrote:

> Most of the time squeak is fast enough. Every so often the gui slows down to a crawl. The user moves the mouse around and the gui will not respond the way it did a moment ago. Movements feel spastic. The user overshoots the mark, moves back, over shoots again. Gradually learning to pause ...a...long...time...between...very...small...movements.
>
> I was recently trying to program some improvements and did something I think sheds a light on the reason.
>
> I was fooling with the handles for a star morph. There are only 6 of them. Currently they all are individual submorphs of the star itself. However it seemed it would simplify things if there was only one handle. The center handle would make a good holder for the other five.
>
> When I finally got that working I ran into the problem that I mentioned in the first paragraph. The mouse gui became extremely retarded (in the time sense). This is consistent with what happens if you should run a mouse over true type fonts or flash morphs. The event processing slows down till it is painful to adjust to.
>
> My previous thought was that only massive pixel processing (large amount of screen updates) would cause a gui slowdown. Now however I am beginning to realize that event dispatch must be a prime suspect as well.
>
> That's all the info I have at the moment. I pass this along incase someone has some confirming or alternate information.
>
> Yours in curiosity and service, --Jerome Peace
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Igor Stasenko
In reply to this post by Tom Rushworth-3
How about removing a bit of wasteful crap ? :)

By default, all system windows having a thin 1-pixel wide shadow. It
is hardly noticeable visually, but slows down things considerably:

[ World fullDrawOn: (World assuredCanvas ) ] timeToRun 527
World allMorphsDo: [:m | m hasDropShadow: false ]
[ World fullDrawOn: (World assuredCanvas ) ] timeToRun  425



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Chris Muller-3
Wow, I never noticed those shadows.

This is so "Squeak" wouldn't you say!?  Subtle (1 pixel!), refined
(because the designer still cared enough for the difference in look),
and, sorry to say, apparently slower!  :-/

Hm, a 10-20% improvement in world drawing speed or a 1-pixel shadow?
I find it hard to not want to cash in those shadows..


On Tue, Feb 16, 2010 at 6:42 PM, Igor Stasenko <[hidden email]> wrote:

> How about removing a bit of wasteful crap ? :)
>
> By default, all system windows having a thin 1-pixel wide shadow. It
> is hardly noticeable visually, but slows down things considerably:
>
> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun 527
> World allMorphsDo: [:m | m hasDropShadow: false ]
> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun  425
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Igor Stasenko
On 17 February 2010 06:42, Chris Muller <[hidden email]> wrote:
> Wow, I never noticed those shadows.
>
> This is so "Squeak" wouldn't you say!?  Subtle (1 pixel!), refined
> (because the designer still cared enough for the difference in look),
> and, sorry to say, apparently slower!  :-/
>
> Hm, a 10-20% improvement in world drawing speed or a 1-pixel shadow?
> I find it hard to not want to cash in those shadows..
>
Well, this inefficiency can be optimized by implementing clever
#drawDropShadowOn: for system window
to not use default implementation, which does ... well you can see
what it does by issuing:

World allMorphsDo: [:m | m drawDropShadowOn: World assuredCanvas ]

So, we could have a cake, and eat it too (in shadow ;)

>
> On Tue, Feb 16, 2010 at 6:42 PM, Igor Stasenko <[hidden email]> wrote:
>> How about removing a bit of wasteful crap ? :)
>>
>> By default, all system windows having a thin 1-pixel wide shadow. It
>> is hardly noticeable visually, but slows down things considerably:
>>
>> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun 527
>> World allMorphsDo: [:m | m hasDropShadow: false ]
>> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun  425
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>>
>
>



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

Igor Stasenko
On 17 February 2010 07:28, Igor Stasenko <[hidden email]> wrote:

> On 17 February 2010 06:42, Chris Muller <[hidden email]> wrote:
>> Wow, I never noticed those shadows.
>>
>> This is so "Squeak" wouldn't you say!?  Subtle (1 pixel!), refined
>> (because the designer still cared enough for the difference in look),
>> and, sorry to say, apparently slower!  :-/
>>
>> Hm, a 10-20% improvement in world drawing speed or a 1-pixel shadow?
>> I find it hard to not want to cash in those shadows..
>>
> Well, this inefficiency can be optimized by implementing clever
> #drawDropShadowOn: for system window
> to not use default implementation, which does ... well you can see
> what it does by issuing:
>
> World allMorphsDo: [:m | m drawDropShadowOn: World assuredCanvas ]
>
err... a little different code

World allMorphsDo: [:m | m class == PluggableSystemWindow ifTrue: [ m
drawDropShadowOn: World assuredCanvas] ]

> So, we could have a cake, and eat it too (in shadow ;)
>
>>
>> On Tue, Feb 16, 2010 at 6:42 PM, Igor Stasenko <[hidden email]> wrote:
>>> How about removing a bit of wasteful crap ? :)
>>>
>>> By default, all system windows having a thin 1-pixel wide shadow. It
>>> is hardly noticeable visually, but slows down things considerably:
>>>
>>> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun 527
>>> World allMorphsDo: [:m | m hasDropShadow: false ]
>>> [ World fullDrawOn: (World assuredCanvas ) ] timeToRun  425
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>>
>>
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Why is the squeak gui slow? New clues.

FDominicus
In reply to this post by Jerome Peace
Jerome Peace <[hidden email]> writes:

> Most of the time squeak is fast enough. Every so often the gui slows
> down to a crawl. The user moves the mouse around and the gui will not
> respond the way it did a moment ago. Movements feel spastic. The user
> overshoots the mark, moves back, over shoots again. Gradually learning
> to pause ...a...long...time...between...very...small...movements.
I know it does not fit here, but this is not typical alone for Squeak. I
just happen to see this on Windows boxed regularly and quite often in
Access based applications. So I'm under the impression that it may be a
more "common" problem. It happens on my Debian Linux box sometimes, and
this machine has 8 cores. So it never ever should crawl to a near-halt.
could it be that the "improved" scheduling may be the reason?

Regards
Friedrich

--
Q-Software Solutions GmbH; Sitz: Bruchsal; Registergericht: Mannheim
Registriernummer: HRB232138; Geschaeftsfuehrer: Friedrich Dominicus