this is really cool :)
Le 1/9/16 à 10:21, Thierry Goubier a écrit :
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
Images intégrées 1
2016-09-01 9:28 GMT+02:00 Thierry Goubier <[email protected]
<mailto:[email protected]>>:
Hi Stef,
2016-09-01 8:13 GMT+02:00 stepharo <[email protected]
<mailto:[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]
<mailto:[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