Hi,
as the developer of both the Dynamic Protocols and the dev-images, I have included the firsts into the latter some times ago. I found them quite useful at that time. However, they slow down a lot the UI (which is already very slow). So, my question is: Who wants me to continue including the dynamic protocols in the dev-images? Is there anyone using them? Bye -- Damien Cassou |
Hm, if DynamicProtocols can be easily installed into the image from the
Universe Browser, then I would say, just leave it to the developers then :-) Does the "traits" button is System Browser comes from DynamicProtocols? Elod > Hi, > > as the developer of both the Dynamic Protocols and the dev-images, I > have included the firsts into the latter some times ago. I found them > quite useful at that time. However, they slow down a lot the UI (which > is already very slow). So, my question is: > > Who wants me to continue including the dynamic protocols in the dev-images? > > > Is there anyone using them? > > Bye > > |
In reply to this post by Damien Cassou-3
Keep DynamicProtocols preinstalled in dev-image and set preference
option to false by default (dynamicProtocolActivation). pf On 30.1.2008, at 15:08, Damien Cassou wrote: > Hi, > > as the developer of both the Dynamic Protocols and the dev-images, I > have included the firsts into the latter some times ago. I found them > quite useful at that time. However, they slow down a lot the UI (which > is already very slow). So, my question is: > > Who wants me to continue including the dynamic protocols in the dev- > images? > > > Is there anyone using them? > > Bye > > -- > Damien Cassou > > smime.p7s (3K) Download Attachment |
In reply to this post by Elod Kironsky
On Jan 30, 2008 3:23 PM, Elod Kironsky <[hidden email]> wrote:
> Hm, if DynamicProtocols can be easily installed into the image from the > Universe Browser, then I would say, > just leave it to the developers then :-) What do you think the 'dev' in dev-images means ? :-) This image has been created and is maintained for developers only. > Does the "traits" button is > System Browser comes from DynamicProtocols? Not at all. -- Damien Cassou |
In reply to this post by Petr Fischer-3
On Jan 30, 2008 3:48 PM, Petr Fischer <[hidden email]> wrote:
> Keep DynamicProtocols preinstalled in dev-image and set preference > option to false by default (dynamicProtocolActivation). This was my idea too. -- Damien Cassou |
In reply to this post by Damien Cassou-3
> Hi,
> > as the developer of both the Dynamic Protocols and the > dev-images, I have included the firsts into the latter some > times ago. I found them quite useful at that time. However, > they slow down a lot the UI (which is already very slow). So, > my question is: > > Who wants me to continue including the dynamic protocols in > the dev-images? > > > Is there anyone using them? > > Bye > > -- > Damien Cassou I vote remove them, first thing I do is disable them. As long as they're available on the universe like everything else, for those who want to install them. Ramon Leon http://onsmalltalk.com |
In reply to this post by Damien Cassou-3
Damien Cassou wrote:
> On Jan 30, 2008 3:23 PM, Elod Kironsky <[hidden email]> wrote: > >> Hm, if DynamicProtocols can be easily installed into the image from the >> Universe Browser, then I would say, >> just leave it to the developers then :-) >> > > > What do you think the 'dev' in dev-images means ? :-) This image has > been created and is maintained for developers only. > > install DynamicProtocols or not :-) >> Does the "traits" button is >> System Browser comes from DynamicProtocols? >> > > Not at all. > > > |
In reply to this post by Damien Cassou-3
> > Keep DynamicProtocols preinstalled in dev-image and set preference
> > option to false by default (dynamicProtocolActivation). > > This was my idea too. > -- > Damien Cassou I'd think the things pre-installed are the ones that mostly everyone uses, like Shout and OmniBrowser. You long ago moved optional packages to the Universe, why would DynamicProtocols be any different? Ramon Leon http://onsmalltalk.com |
In reply to this post by Ramon Leon-5
At Wed, 30 Jan 2008 08:22:16 -0700,
Ramon Leon wrote: > > > Hi, > > > > as the developer of both the Dynamic Protocols and the > > dev-images, I have included the firsts into the latter some > > times ago. I found them quite useful at that time. However, > > they slow down a lot the UI (which is already very slow). So, > > my question is: > > > > Who wants me to continue including the dynamic protocols in > > the dev-images? > > > > > > Is there anyone using them? > > > > Bye > > > > -- > > Damien Cassou > > I vote remove them, first thing I do is disable them. As long as they're > available on the universe like everything else, for those who want to > install them. > > Ramon Leon > http://onsmalltalk.com > I agree. We should remove them if they're disabled by default. DocumentationInformations for newcomers in Script Manager (documentation->dynamicProtocols) is far enough (hoping developers have a good RTFM practice) to be informed about their existence. -- Martial Boniou |
In reply to this post by Damien Cassou-3
On Jan 30, 2008 4:03 PM, Damien Cassou <[hidden email]> wrote:
> > > Does the "traits" button is > > System Browser comes from DynamicProtocols? > > Not at all. Dumb question: What *are* they used for in the dev image when turned on? |
In reply to this post by Damien Cassou-3
Hi Damien,
I like the dynamic protocols but don't use them because of the performance impact. I was curious and profiled it. It looks like the local send cache is not being used as no interests are being declared. In the code below I declare interest in everything. I'm not sure about the ramifications of this. When cached it is almost usable - perhaps with some tweaking this excellent feature could be more widely used. Regards, Zulq. protocols := DynamicProtocols allAvailableProtocols. class := Object. " clear caches " protocols asArray collect: [:dp | dp invalidateCache]. LocalSends current initialize. TimeProfileBrowser spyOn: [protocols collect: [:dpClass | dpClass on: aClass] thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. " 9.69 seconds " TimeProfileBrowser spyOn: [protocols collect: [:dpClass | dpClass on: aClass] thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. " 6.44 seconds - improvement from caches in dynamic protocols themselves" " declare interest in everything (maybe wrong) " LocalSends current noteInterestOf: nil in: ProtoObject; noteInterestOf: nil inAll: ProtoObject allSubclasses. " prime local send caches " TimeProfileBrowser spyOn: [protocols collect: [:dpClass | dpClass on: aClass] thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. "6.49 seconds " " local sends cached " TimeProfileBrowser spyOn: [protocols collect: [:dpClass | dpClass on: aClass] thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. "0.69 seconds " Damien Cassou wrote: > Hi, > > as the developer of both the Dynamic Protocols and the dev-images, I > have included the firsts into the latter some times ago. I found them > quite useful at that time. However, they slow down a lot the UI (which > is already very slow). So, my question is: > > Who wants me to continue including the dynamic protocols in the dev-images? > > > Is there anyone using them? > > Bye > |
In reply to this post by Jason Johnson-5
> Dumb question: What *are* they used for in the dev image
> when turned on? Dumb answer... Bringing Squeak to its knees and making you want to pull your hair out! Ramon Leon http://onsmalltalk.com |
In reply to this post by Jason Johnson-5
> Dumb question: What *are* they used for in the dev image
> when turned on? Real answer, from memory, dynamically computed method protocols, just look at the list of categories in your preferences under dynamic protocols. Interesting idea, but Squeak's UI is slow enough as it is, it doesn't have extra cycles to spare. Ramon Leon http://onsmalltalk.com |
Sorry, I didn't know what it did since I've never seen dynamic
protocols work, I always turn it off as the very first step of getting a new image. :) On Jan 30, 2008 6:38 PM, Ramon Leon <[hidden email]> wrote: > > Dumb question: What *are* they used for in the dev image > > when turned on? > > Real answer, from memory, dynamically computed method protocols, just look > at the list of categories in your preferences under dynamic protocols. > Interesting idea, but Squeak's UI is slow enough as it is, it doesn't have > extra cycles to spare. > > > Ramon Leon > http://onsmalltalk.com > > > |
In reply to this post by Damien Cassou-3
On 30-Jan-08, at 6:08 AM, Damien Cassou wrote: > Who wants me to continue including the dynamic protocols in the dev- > images? I'd say take them out. They're too slow to use by default, and very easy to install for those who want them. Colin |
In reply to this post by Ramon Leon-5
On 30-Jan-08, at 9:38 AM, Ramon Leon wrote: >> Dumb question: What *are* they used for in the dev image >> when turned on? > > Real answer, from memory, dynamically computed method protocols, > just look > at the list of categories in your preferences under dynamic protocols. > Interesting idea, but Squeak's UI is slow enough as it is, it > doesn't have > extra cycles to spare. Which is, if you think about it, a quite ridiculous state of affairs. Ten years ago with machines that struggled to achieve tinyBenchmark figures of 3 million bc/sec we were able to use the UI tolerably. My current machine manages 544 million bc/sec - 180 times as fast - and yet the UI is if anything slower and less usable. And this is in a plain 3.9 image without the cpu-sucking dynamic protocols! Insane. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim "Bother," said Pooh, reading his bank statement from Barings. |
In reply to this post by Zulq Alam-2
Hey Zulq - way to go with investigating the problem! :)
The point of declaring interests precisely is that it allows the system to make the right space/time trade offs. Declaring interest in everything is quite likely to create (memory) problems worse than those it solves. Let me give a little background. Squeak, like other Smalltalks and some other modern IDEs, has a Shared Code Model, which is used for pretty much all editing and viewing. It is pretty minimal, and well optimized for straight forward tasks, like compact storage in memory, execution, editing, history viewing. Of course, people want to do and see more that what is on the surface, in the model - people want a real time lint tool, they want to see required (unimplemented, but self sent) methods and so forth - these are Model Extensions (MEs). And of course they want them to appear in real time, at low latency, so the MEs need to be cached. But caching every computation possible over all the code in the image is insane, so we require tools to declare Explicit Interests - tell me in advance what you might ask, then I can cache just that. With regard to what Zulq did - I'm almost sure the tools are not actually interested in Local Sends, per se. But what is happening is that some of the dynamic categories use other MEs that use LocalSends for their calculations. You see, we have Layered Extensions, because sometimes its worth caching some intermediate results, not just end results. So what you want to do is make sure that the tools declare interest in what they actually ask about, and then make sure that each Model Extension declares interest in any temporary values it uses, such as Local Sends. In particular, a quick check shows that the dynamic protocols do not express interests in RequiredSelectors - fixing this would probably improve things significantly. In an old demo tool I wrote that did this, RequiredSelectors were shown in real time. What I summarized above is a pattern language for smart, efficient code analysis tools, described in a pattern paper by Andrew Black and myself [1]. I think it has many potential applications in Squeak. I would not be surprised if it can be used to improve the responsiveness of the existing tools - if someone is interested. [1] http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf Daniel Zulq Alam wrote: > Hi Damien, > > I like the dynamic protocols but don't use them because of the > performance impact. > > I was curious and profiled it. It looks like the local send cache is > not being used as no interests are being declared. > > In the code below I declare interest in everything. I'm not sure about > the ramifications of this. > > When cached it is almost usable - perhaps with some tweaking this > excellent feature could be more widely used. > > Regards, > Zulq. > > protocols := DynamicProtocols allAvailableProtocols. > class := Object. > > " clear caches " > protocols asArray collect: [:dp | dp invalidateCache]. > LocalSends current initialize. > > TimeProfileBrowser spyOn: [protocols > collect: [:dpClass | dpClass on: aClass] > thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. > " 9.69 seconds " > > TimeProfileBrowser spyOn: [protocols > collect: [:dpClass | dpClass on: aClass] > thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. > " 6.44 seconds - improvement from caches in dynamic protocols themselves" > > " declare interest in everything (maybe wrong) " > LocalSends current > noteInterestOf: nil in: ProtoObject; > noteInterestOf: nil inAll: ProtoObject allSubclasses. > > " prime local send caches " > TimeProfileBrowser spyOn: [protocols > collect: [:dpClass | dpClass on: aClass] > thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. > "6.49 seconds " > > " local sends cached " > TimeProfileBrowser spyOn: [protocols > collect: [:dpClass | dpClass on: aClass] > thenSelect: [:dp | (dp getSelectorsFor: Object) notEmpty]]. > "0.69 seconds " > > > Damien Cassou wrote: >> Hi, >> >> as the developer of both the Dynamic Protocols and the dev-images, I >> have included the firsts into the latter some times ago. I found them >> quite useful at that time. However, they slow down a lot the UI (which >> is already very slow). So, my question is: >> >> Who wants me to continue including the dynamic protocols in the >> dev-images? >> >> >> Is there anyone using them? >> >> Bye >> > > |
In reply to this post by Damien Cassou-3
Hi Damien,
Damien Cassou wrote: > as the developer of both the Dynamic Protocols and the dev-images, I > have included the firsts into the latter some times ago. I found them > quite useful at that time. However, they slow down a lot the UI (which > is already very slow). So, my question is: > > Who wants me to continue including the dynamic protocols in the dev-images? If you can speed-up it somehow I would keep it, because it is valuable, but not with a current speed. And I think you can make some optimizations simply by preparing results in background while browser is usable immediately. Best regards Janko -- Janko Mivšek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si |
In reply to this post by Daniel Vainsencher-3
"Daniel Vainsencher" <[hidden email]> wrote
> [1] http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf Very nice paper, thank you. Sophie |
In reply to this post by Daniel Vainsencher-3
> [1] http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf
On page 22 of this paper, you mentioned that the notification mechanism should tell you the previous values of classes and methods for the purpose of cache invalidation. Goran and I made just these changes to SystemChangeNotifier in Squeak as part of our DeltaStreams project; now, when classes, methods, and class comments are changed, a notification with both the old and new version is sent. It is completely backward-compatible with the old SystemChangeNotifier protocol, as far as we can tell: http://map.squeak.org/packagebyname/deltastreamfixes In the future (a month or two), I'm going to augment the notifier again to support grouping of related changes, such as all changes involved in loading a package, filing-in a changeset, or loading a bug-fix, so that the enhanced logging features of DeltaStreams can show system changes at more the level the user made them; loading a package was a single-action to them; the log should show it as a single action. -- Matthew Fulmer -- http://mtfulmer.wordpress.com/ Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808 |
Free forum by Nabble | Edit this page |