Hi,
From the top of my head: I would understand that systems where there
are hundreds of thousands of events per second, maybe one does not want
to pay the overhead of announcements...
But, How many events are produced from a morph per second? One? Two?
Five? Is it really the case of morphs the one that require optimization?
-------- Original Message --------
2016-08-30 9:44 GMT+02:00 Denis Kudriashov <[email protected]
<mailto:[email protected]>>:
Hi
2016-08-30 8:52 GMT+02:00 Norbert Hartl <[email protected]
<mailto:[email protected]>>:
I think for the 0 case we should think about instantiating the
SubscriptionRegistry lazily. This would also mitigate the
effect that if a lot of announcers are created they create
only a single object instead of two until used. Of course this
depends on the probability of having a lot of announcers where
only a few are used.
The #announce: method looks like it has been lazy before.
Announcer>>#announce: anAnnouncement
| announcement |
announcement := anAnnouncement asAnnouncement.
registry ifNotNil: [
registry deliver: announcement
].
^ announcement
checks for #ifNotNil: but registry is created in #initialize.
So #ifNotEmpty: would be right here but #deliver: checks that,
too.
We always hide announcer instance inside owner. So it could
instantiate announcer lazily if such optimization really needed.
I remember making sure this was the case for Morph instances. If no
subscriber, no announcer and make sure announcing something doesn't
create the announcer lazily.
Thierry