Am 30.08.2016 um 09:44 schrieb Denis Kudriashov <dionisiydk@gmail.com>:Hi2016-08-30 8:52 GMT+02:00 Norbert Hartl <norbert@hartl.name>: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.That prevents creating an announcer until someone creates the announcer lazily. That does not mean there is a subscription, especially if there are announcements sent. Announcements are such a central component (we made it that way) that every useful optimization should be considered!
Norbert