[squeak-dev] On the performance of our browsers... THEY TICK!

David T. Lewis lewis at mail.msen.com
Sun Jan 21 19:44:00 UTC 2018


On Sun, Jan 21, 2018 at 10:46:59AM -0800, tim Rowledge wrote:
> A lot of Morphs simply fetch & re-render new info at every tick (or at least, they used to). For some case that is actually proper (think Dave N Smith???s ancient crawling BlobMorph). 
> 
> Some got a bit smarter and at least compared the new info to the old before rendering new stuff. Of course, sometimes that involves comparing something a bit more complex than a 10 character String, so not all that smart. And sometimes even simply fetching the new info involves proxies transforming into large amounts of data obtained fro a slow server somewhere, or a colossal list being pointlessly rebuilt.
> 
> Getting everything up to date and using #changed etc so morphs only update when they plausibly need to would be a nice thing for slower machines like Pis. We???ll need to have something that considers all the browsers to be its dependents so that when a code change is made that would affect a browser other than the active one we can have the change broadcast to everyone properly. And it would be nice for it to be able to be pretty specific about the change so something a bit more efficient than ???redraw everything??? can be used. The current CodeHolder>>#updateCodePaneIfNeeded and CodeHolder>>#didCodeChangeElsewhere arrangement doesn???t look particularly nice. 
>

That sounds right. If I comment out the body of CodeHolder>>stepIn: so that
it no longer callse #updateListsAndCodeIn: when stepping, the browsers continue
to work as expected, so the basic MVC style updates are workin in the browsers.
However, if I open a versions browser and use it to revert a method, then
the corresponding code pane in another browser no longer gets updated.

It looks like the stepping updates are there to ensure that open browsers
get updated even though we do not (yet) have the "something that considers
all the browsers to be its dependents" part implemented.

If it is true that the stepping updates are being done primarily to ensure
updates for all browsers within a Morphic world, and if it is also true
that some sort of registry is required, then it might make sense for the
current world to be responsible for keeping the registry, such that change
notifications would be delivered to browsers within the current world, and
not to all browsers in all of the other Morphic projects that may exist
in an image.

But I have a feeling I am overlooking something obvious. Isn't there some
more global notification mechanism already present in SystemOrganizer or
SystemNavigation or some such thing?

Dave
 


More information about the Squeak-dev mailing list