On 9 January 2014 10:26, J.F. Rick <self@je77.com> wrote:
OK. I've made a little headway in diagnosing the problem. It seems that one culprit is that the "self changed" thing works differently with Athens than previously. Correct me if I'm wrong, but it seems like sending that method immediately causes the canvas to draw. In contrast, before, it just marked that area as needing to be redrawn and then, on an update cycle, it would redraw the total area that changed. I was using a model-view pattern that had 25 components to it. When each got the update command, it seems to have launched the canvas to draw. When I changed it so that only one changed command was given, the interface became immediately much snappier. Adding a factor of 25 to rendering could cause even fast rendering to be quite noticeable. So, it is not an inherent problem with drawing forms but rather one with changing the programming paradigm. Forms are just noticeably slower to draw than vector components and that exacerbated my problem.
Hmm.. Can you explain me, how Athens is related to that? :)
'self changed' logic and its handling is related to Morphic and used by it.there's no way how you can change it by changing something in Athens.
�Cheers,JeffOn Thu, Jan 9, 2014 at 8:18 AM, J.F. Rick <self@je77.com> wrote:
Hmm. Weird. Could it be a linux thing? Bit order or something? Could it be a transparency issue? Could it be a size of the form? I have forms of size around 200 x 200. At this point, I haven't numerically investigated it. I just notice a significant difference in rendering speed as I switch from forms to SVGs. Perhaps it is having to redraw the entire interface very often. I'll investigate a bit more when I have some time.Cheers,JeffOn Thu, Jan 9, 2014 at 2:08 AM, Igor Stasenko <siguctua@gmail.com> wrote:
On 8 January 2014 08:59, J.F. Rick <self@je77.com> wrote:
In good news, I was able to implement the S/s functionality and both of my SVGs now load properly. I'll try some more soon and commit the changes once I have tested it a bit more.In bad news, the cacheing was working properly, so I still suspect that rendering forms as a paint is too intensive to be practical for many applications. I'll try to evaluate it a bit more as I replace forms with SVGs. If the forms are causing the problem, then performance should noticeably increase.�I just did a little comparison:
| surface time |
surface := AthensCairoSurface extent: 200@200.
surface drawDuring: [ :canvas|
��� canvas setPaint: Color red.
��� canvas setShape: (0@0 extent: 100@100).
��� time := [ 10000 timesRepeat: [ canvas draw ] ] timeToRun.
���� ].
time
�0:00:00:00.115=============same as above but with:
��� canvas setPaint: (ThemeIcons current backIcon).
time
�0:00:00:00.093
===========same as above but with:��� (canvas setPaint: (ThemeIcons current backIcon)) repeat.
time
�0:00:00:00.956as you can see, even in slowest case, the throughput is:100*100*10000 = 100'000'000 pixels (texels) per second.�Cheers,Jeff
--
Best regards,
Igor Stasenko.--
Jochen "Jeff" Rick, Ph.D.
http://www.je77.com/
Skype ID: jochenrick
--
Best regards,
Igor Stasenko.