Allow faster eventhandler dispatching by keeping pointers to handler lists.
Matt Joras
mjoras at FreeBSD.org
Sun Oct 29 16:47:21 UTC 2017
On 10/29/2017 09:24, Ian Lepore wrote:
> On Sun, 2017-10-29 at 10:12 -0600, Ian Lepore wrote:
>> Actually, it looks like we've done nearly identical work, modulo some
>> minor naming differences (that I'm completely agnostic about), and you
>> have the EHL_NONEMPTY flag that didn't occur to me until after I
>> created the phab review last night.
>>
>> The other big difference is that mine still links the fast/static lists
>> into the global list-of-lists, to preserve what I call "late loose
>> binding" where an event handler can register for events before the
>> event provider is present (picture a module that monitors events which
>> gets loaded before a module that produces those events).
>>
>> It ocurred to me this morning that an optimization for mine would be to
>> place any list created by eventhandler_create_list() at the end of the
>> global list, on the theory that it will mostly be accessed directly via
>> pointer and the items at the head of the global list should be the ones
>> more likely to be searched by name.
>>
>> -- Ian
> Oops, I apparently overlooked _eventhandler_insert_static() in your
> changes. I think if that were changed to first check whether the new
> handler list already exists on the global list, our changes really
> would be essentially identical.
>
> -- Ian
Indeed. The other difference I noted is that my version
statically-allocates the actual list structs, and relies on static
initialization, whereas yours uses malloc and initializes them explicitly.
How would you like to proceed?
Matt
More information about the freebsd-arch
mailing list