> On 01 Sep 2016, at 10:21, Thierry Goubier <[email protected]> wrote: > > Hi Stef, > > here is the script I use: > > | c1 c2 c3 n1 n2 n3 l1 l2 l3 | > c1 := c2 := c3 := 0. > n1 := (Announcer>>#announce:) ast. > n2 := #(subscribe:do: subscribe:send:to: basicSubscribe:) collect: [ :e | > (Announcer>>e) ast ]. > n3 := #(unsubscribe: removeSubscription:) collect: [ :e | (Announcer>>e) ast > ]. > l1 := MetaLink new metaObject: [ c1 := c1 + 1 ]; selector: #value. > l2 := MetaLink new metaObject: [ c2 := c2 + 1 ]; selector: #value. > l3 := MetaLink new metaObject: [ c3 := c3 + 1 ]; selector: #value. > [ n1 link: l1. n2 do: [ :e | e link: l2 ]. n3 do: [ :e | e link: l3 ]. > (Duration minutes: 1) wait. > n1 removeLink: l1. n2 do: [ :e | e removeLink: l2 ]. n3 do: [ :e | e > removeLink: l3 ]. > { 'announce' -> c1. 'subscribe' -> c2. 'unsubscribe' -> c3 } inspect ] > forkAt: Processor userBackgroundPriority
Well, this is really cool code ! > <image.png> > > 2016-09-01 9:28 GMT+02:00 Thierry Goubier <[email protected]>: > Hi Stef, > > > 2016-09-01 8:13 GMT+02:00 stepharo <[email protected]>: > Hi thierry > > I think that if we would have a tool to show us the activity I'm quite sure > that we would find bugs > > or mistaken behavior. > > Yes. I did some checks on Morphic and AltBrowser after getting the numbers, > to see if I wasn't > doing something wrong with my code. > > could you send the scripts you did? > > Later today. I don't have access now to the laptop where I did it. > > Thierry > > > Stef > > > Le 30/8/16 à 22:36, Thierry Goubier a écrit : > > Numbers for the discussion: > > No activity, empty desktop: > announcements 608/minute > subscribe add/remove 9/minute > > Activity, AltBrowser: > announcements 1109/minute > subscribe add/remove 207/minute > > Activity, Nautilus: > announcements 2488/minute > subscribe add/remove 716/minute > > Empirically the same processus in both environments: open two system browser, > in one, find the Announcer class, browse through a few of the methods, select > basicSubscribe: and ask for senders. > > Tracing done with Metalinks during one minute. > > Not exactly what I would have expected, especially the ratio subscribe > add/remove and announcements. > > Thierry > > Le 30/08/2016 à 17:36, Henrik Johansen a écrit : > > On 30 Aug 2016, at 5:16 , Thierry Goubier > <[email protected]> wrote: > > > I have the same concern with an Announcer optimized for certain use > cases, in the fact that the announcer creator is the one choosing > the 'kind of' optimisation it would target, hoping that the > listeners will conform to that use case... > > > There simply is no silver bullet that will give unbeatable > performance in all scenarios; and focusing on improving one facet of > the default implementation will inevitably lead to either - the loss > of some important property (general thread-safety if removing the > mutex protection, ability to unsubscribe in handler if removing the > copy operation and extending the delivery mutex protection, etc.) - > greatly degenerated performance for another facet (like #remove for > OC's). > > That said, the current implementation is very geared towards decent, > balanced subscribe/unsubscribe performance, at the expense of > delivery speed. I've said it before, and still think, that offering > at least one other implementation emphasizing delivery speed over > subscription/unsubscription performance, in the same way the original > implementation did (and/or changing the default Announcer to switch > between the two dynamically based on heuristics) *would* be a > valuable addition to the general library. > > Cheers, Henry > > > > > > > >
