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


Reply via email to